Sono in grado di caricare un componente Angular 2 dinamico utilizzando ComponentResolver e ViewContainerRef.Passaggio dell'input durante la creazione dinamica del componente Angular 2 mediante ComponentResolver
Tuttavia, non sono in grado di capire come passare qualsiasi variabile di input del componente figlio in questo.
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("");
}
}
così nell'esempio sopra dicono loadChild
è chiamata su un pulsante click, io sono in grado di caricare Child1Component, ma come passare var1
Input di child? anche come iscriversi alla close
EventEmitter decorato con @Output
Grazie per questo, non sono sempre una richiamata però sto ottenendo esempio direttamente sul createComponent, ti invitiamo a aggiornare la soluzione e anche come usare la funzione @Output? –
Grazie per l'aggiornamento. –
@Gunter, ha provato la stessa strada suggerita da te, ma ottenendo alcune eccezioni nella console del browser e non funziona come previsto. puoi per favore aiutare rispondendo a questo post? http://stackoverflow.com/questions/38360904/typeerror-cannot-read-property-createcomponent-of-undefined – Krishnan