2017-03-20 15 views
17

現在、他のコンポーネントの存在する角2のコンポーネントにこの問題があります。 「メイン」コンポーネントのコンポーネントは、階層内に複数回存在することができます。クエリセレクタが定義されていないため、プロパティのクエリを構築できません

SidenavLinkComponent: 
@ContentChild(SidenavNavComponent) navComponent: SidenavNavComponent; 

SidenavNavComponent: 
@ContentChildren(SidenavLinkComponent) linkComponents: QueryList<SidenavLinkComponent>; 

私が作った「クエリセレクタが定義されていなかったので、 『 はSidenavLinkComponent『の』navComponent」プロパティのクエリを構築することはできません』:

しかし、私はこのエラーを取得しています問題が表示されているこのスリムなプランカー: Plunker

私はなぜそれが起こるのかわかりません。

+1

を使用して解決することができます。セレクタをテンプレート変数に変更した場合https://plnkr.co/edit/mWIUi4fT5dby1C7Lx4RZ?p=preview –

+0

プロジェクトディレクトリ構造にファイル(ディレクティブを含む)を配置するとこのエラーが発生する問題がありましたファイルが共通のモジュールからインポートされた場合でも、すべてのコンシューマのファイルではない場合。 – David

答えて

27

SidenavComponentSidenavNavComponentの間に循環依存があるためです。それは私がそれが原因循環依存のだと思うforwardRef

@ViewChild(forwardRef(() => SidenavNavComponent)) 
private navComponent: SidenavNavComponent; 

Plunker example

+1

私は同じ問題を抱えています。そしてこの解決策は私を助けました。ありがとう! –

+3

あなたはAngularチームのために働くべきです、あなたは非常に多くの黒い魔法を知っています!^_^ – Belter

+0

@Belterありがとう。学習に多くの時間を費やした。角度は楽しいです:) –

関連する問題