2016-06-13 10 views
1

トリガされたイベントからコンポーネントを動的に追加する必要がありますが、loadasrootおよびloadnexttolocationを使用することができましたが、問題はComponentRefとI cant追加されたコンポーネントのプロパティと呼び出しメソッドにアクセスするためのワットを見つけます。私はloadintolocationについてのいくつかのスレッドを読んだが、それは彼らが候補をリリースした後にそれを削除したようだ?動的に作成されたコンポーネントのメソッドを呼び出す2

+1

多分、あなたはどれだけあなたが持っているか、次に何をする必要があるかを示すコードを公開することができますか? – brianlmerritt

答えて

0

このようにしてComponentResolverクラスを使用できます。 ComponentRefインスタンスでは、新しく作成したコンポーネントのプロパティとメソッドの両方にアクセスできます。

@ViewChild('target', {read: ViewContainerRef}) target; 

constructor(private resolver: ComponentResolver) {} 

createComponent() { 
    this.resolver.resolveComponent(MyComp).then(
    (factory:ComponentFactory<any>) => { 
     var cmpRef = this.target.createComponent(factory); 
     var cmp = cmpRef.instance; 
    }); 
} 
0
then(cmpRef:ComponentRef => { 
    cmpRef.instance.myProp = someValue; 
    cmpRef.instance.someOutput.subscribe(val => this.someOtherOutput.next(val)); 
}); 

新しい方法ViewContainerRef.createComponent()のためにもAngular 2 dynamic tabs with user-click chosen components参照してください。

DynamicComponentLoaderは推奨されていません。

関連する問題