2016-06-13 87 views
1

我需要从触发事件动态添加组件,我设法使它与loadasroot和loadnexttolocation一起工作,但问题在于那些仅返回ComponentRef的承诺,而且我不能找到一个wat来访问属性并在添加的组件中调用方法。我已经阅读了关于loadintolocation的一些主题,但似乎他们在发布候选人之后删除了这些内容。在动态创建的组件angular angular 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)); 
}); 

又见Angular 2 dynamic tabs with user-click chosen components新途径ViewContainerRef.createComponent()

DynamicComponentLoader已弃用。