Passing Input beim dynamischen Erstellen von Angular 2 Component mit ComponentResolver
Ich kann eine dynamische Angular 2-Komponente mit ComponentResolver und ViewContainerRef laden.
Ich kann jedoch nicht herausfinden, wie eine Eingabevariable der untergeordneten Komponente an diese übergeben wird.
parent.ts
@Component({
selector: "parent",
template: "<div #childContainer ></div>"
})
export class ParentComponent {
@ViewChild("childContainer", { read: ViewContainerRef }) childContainer: ViewContainerRef;
constructor(private viewContainer: ViewContainerRef, private _cr: ComponentResolver) {}
loadChild = (): void => {
this._cr.resolveComponent(Child1Component).then(cmpFactory => {
this.childContainer.createComponent(cmpFactory);
});
}
}
child1
@Component({
selector: "child1",
template: "<div>{{var1}}</div><button (click)='closeMenu()'>Close</button>"
})
export class Child1Component {
@Input() var1: string;
@Output() close: EventEmitter<any> = new EventEmitter<any>();
constructor() {}
closeMenu = (): void => {
this.close.emit("");
}
}
so im obigen Beispiel sagloadChild
wird auf Knopfdruck aufgerufen, ich kann Child1Component laden, aber wie wird @ übergebvar1
Eingabe des Kindes? Auch Wie abonniere ichclose
EventEmitter dekoriert mit@Output