在动态创建的组件angular angular 2中调用方法
问题描述:
我需要从触发事件动态添加组件,我设法使它与loadasroot和loadnexttolocation一起工作,但问题在于那些仅返回ComponentRef的承诺,而且我不能找到一个wat来访问属性并在添加的组件中调用方法。我已经阅读了关于loadintolocation的一些主题,但似乎他们在发布候选人之后删除了这些内容。在动态创建的组件angular angular 2中调用方法
答
现在你可以用这种方式使用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;
});
}
答
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
已弃用。
也许你可以发布一些代码来显示你有多远,以及下一步你需要做什么? – brianlmerritt