Mogę załadować dynamiczny komponent Angular 2 przy użyciu składników ComponentResolver i ViewContainerRef.Przekazywanie danych wejściowych podczas tworzenia komponentu Angular 2 dynamicznie za pomocą komponentu ComponentResolver
Jednak nie jestem w stanie dowiedzieć się, jak przekazać do tego dowolną zmienną wejściową komponentu potomnego.
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("");
}
}
więc w powyższym przykładzie mówią loadChild
jest nazywany na kliknięcie przycisku, jestem w stanie załadować Child1Component, ale jak przekazać var1
Wejście dziecka? także jak zapisać się do close
EventEmitter ozdobione @Output
Dzięki za to, że nie otrzymuję zwrotnego jednak jestem coraz wystąpienie bezpośrednio na createComponent, Czy należy zaktualizować i rozwiązania także jak korzystać z funkcji @Output? –
Dziękujemy za aktualizację. –
@Gunter, wypróbowano w ten sam sposób, co sugerowane przez Ciebie, ale uzyskałem pewne wyjątki w konsoli przeglądarki i nie działało zgodnie z oczekiwaniami. Czy możesz pomóc, odpowiadając na ten post? http://stackoverflow.com/questions/38360904/typeerror-cannot-read-property-createcomponent-undefined – Krishnan