2016-10-17 7 views
2

私はdiv要素に動的にHTMLコントロールを追加しようとすると、」とコントロールを作成した後、私はメソッドの@ViewChildの一時変数を角2で作成する方法は?

@ViewChild('dropDownListReference') myDropDownList: typeOfComponent 

コントロールを生成した後、クラスではなくメソッドで作成することをviewchild作成することによって、その上の操作を実行したいと思いますこれを初期化できません

AddLevelClick() { 
var el: HTMLElement = document.getElementById('multi-sort-body'); 
el.innerHTML = "<div #test1></div>"; 
@ViewChild('test1') myDropDownList: typeOfComponent // Unable to create here 
} 

ViewChild要素をローカルに作成する手掛かりはありますか?

+0

解決方法はありましたか?私はまったく同じ問題を抱えています。私は解決策の近くにいません。 – MrfksIV

答えて

1

ViewChildを動的に追加して使用することはできません。

ViewChildは、コンポーネントまたはディレクティブタイプまたはテンプレート変数がコンポーネントテンプレートに静的に追加された場合にのみ機能します。

@ViewChild()をメソッド内に追加することもできません。クラスレベルのプロパティでのみ機能し、静的に追加する必要があります。

コンポーネントテンプレートにHTMLを静的に追加するために、コンポーネントとディレクティブもインスタンス化されます。

ViewContainerRef.createComponent()を使用すると、コンポーネントを動的に追加することができます。例についてはAngular 2 dynamic tabs with user-click chosen components

+0

はNgComponentOutletです。私はAngular 2.0を使用しています。最終リリース – sudhir

+0

https://github.com/angular/angular/blob/master/CHANGELOG.mdのように見えません。 –

関連する問題