2016-08-31 21 views
1

を使用してparentコンポーネントにテンプレートを追加しています。テンプレートでは私のchildディレクティブで扱われているchild要素があります。 @Query(Child)QueryListを使用して子が作成されたときを検出しようとしていますが、子が追加されたときにQueryListサブスクライブコールバックは呼び出されません。子が動的に追加されたときの検出

子要素が親に(動的に)追加されたときを検出する方法はありますか?

plunkrあなたはその親は、子が追加されaddボタンを押すと、あなたはchild要素が追加され、コンソールされている開発者ツールで見ることができ、それぞれの子コンポーネントのdivをレンダリング見ることができる例で

メッセージは出力されますが、QueryListは更新されません...

アイデア?

更新RC6:

@Query()がRC6に削除されましたが、私はplunkerが@ContentChildren@ViewChildrenを使用するように更新しており、結果は同じではありません、どちらもViewContainerRef.createEmbeddedViewで追加された新しい要素を検出します。

さらに、私はgetElementsByTagName("child")で要素を取得するために機能を追加しましたが、これは機能しますが、私はこの方法が最善ではないと思います。

答えて

-1

OnChangesの使用を検討しましたか?これは、入力が変更されるたびに更新されるフックで、比較して処理できる宣言と値のjsonリストを提供します。

import {OnChanges} from '@angular/core' 

class implements OnChanges 


ngOnChanges(){ 
//handle changes 
} 
+0

間違い#4:クエリリストを検出するngOnChangesを使用してはまあhttp://angularjs.blogspot.com.es/2016/04/5-rookie-mistakes-to-avoid-with-angular.html –

+0

を変更しますあなたが意図的にそれを行うなら必ずしも間違いではありませんが、私はそれがデフォルトにするのがベストプラクティスではないことを認識しています。 –

関連する問題