В моем приложении Angular у меня есть родительский модуль, который динамически заполняет другие дочерние модули. Мой ребенок модули имеют этот шаблон:angular2: Как использовать EventEmitter для компонентов, созданных во время выполнения?
<input type="radio" class="form-control"
[checked] = "message.default == 1"
[value] = "message.default"
(change)="onSelectionChange(message)"
name="default" >
и это тс:
export class MessageComponent implements OnInit {
message: MessageInterface;
@Output() onCheckedChange = new EventEmitter<MessageInterface>();
constructor() { }
ngOnInit() {
}
onSelectionChange(message: MessageInterface) {
this.onCheckedChange.emit(message);
}
}
и это мой родительский шаблон
<div #placeholder ></div>
и ц
export class ParentComponent implements OnInit {
@ViewChild('placeholder', {read: ViewContainerRef}) placeHolder;
ngOnInit() {
for(let i=0; i<this.aVariable; i++) {
let factory = this.componentFactoryResolver.resolveComponentFactory(ChildComponent);
this.placeHolder.createComponent(factory);
}
}
onCheckedChange(message: MessageInterface) {
console.log("parent intercept");
}
, где переменная «aVariable» - это значение, возвращаемое службой, которую я вызываю.
Когда я нажимаю на радиокамеру, не отображается сообщение в журнале, кажется, что родительский источник не получает излучение EventEmitter. Что случилось?
пожалуйста, вставьте селектор в родительском зрения – Sravan
вы должны иметь что-то подобное, '<ребенок (onCheckedChange) =«onCheckedChange ($ событие)»>' – Sravan
Чайлдс не зашиты в родителей, они добавлено во время выполнения с let factory = this.componentFactoryResolver.resolveComponentFactory (ChildComponent); this.placeHolder.createComponent (завод); где placeHoder - @ViewChild ('placeholder', {read: ViewContainerRef}) placeHolder; – giozh