Angular 2.0 中动态插入的子组件访问
Dynamically inserted child components access in Angular 2.0
我正在使用 this 示例在我的应用程序中动态创建组件。
export class App {
@ViewChild('placeholder', {read: ViewContainerRef}) viewContainerRef;
private componentFactory: ComponentFactory<any>;
constructor(componentFactoryResolver: ComponentFactoryResolver, compiler: Compiler) {
this.componentFactory = componentFactoryResolver.resolveComponentFactory(HelloComponent);
}
addItem () {
this.viewContainerRef.createComponent(this.componentFactory, 0);
}
}
问题来了。由于此组件被跟踪为@ContentComponents,我如何才能将数据注入此类组件?
我这样试:
@ContentChildren(TextComponent) components: QueryList<TextComponent>;
现在我成功获得了我的TextComponent的QueryList
然后我尝试这样的事情:
this.components.forEach(x => x.Message = "Content component");
而且没有效果。
应该这样做:
addItem () {
var cmpRef = this.viewContainerRef.createComponent(this.componentFactory, 0);
cmpRef.instance.someProp = 'someValue';
cmpRef.instance.someObservable.subscribe(val => this.val = val);
}
我正在使用 this 示例在我的应用程序中动态创建组件。
export class App {
@ViewChild('placeholder', {read: ViewContainerRef}) viewContainerRef;
private componentFactory: ComponentFactory<any>;
constructor(componentFactoryResolver: ComponentFactoryResolver, compiler: Compiler) {
this.componentFactory = componentFactoryResolver.resolveComponentFactory(HelloComponent);
}
addItem () {
this.viewContainerRef.createComponent(this.componentFactory, 0);
}
}
问题来了。由于此组件被跟踪为@ContentComponents,我如何才能将数据注入此类组件?
我这样试:
@ContentChildren(TextComponent) components: QueryList<TextComponent>;
现在我成功获得了我的TextComponent的QueryList 然后我尝试这样的事情:
this.components.forEach(x => x.Message = "Content component");
而且没有效果。
应该这样做:
addItem () {
var cmpRef = this.viewContainerRef.createComponent(this.componentFactory, 0);
cmpRef.instance.someProp = 'someValue';
cmpRef.instance.someObservable.subscribe(val => this.val = val);
}