Die DynamicContentLoader-Dokumentation erläutert nicht, wie die Eingaben einer untergeordneten Komponente ordnungsgemäß geladen werden können. Lassen Sie uns sagen, dass ich ein Kind haben, wie:So übergeben Sie @Input() - Parameter an eine eckige 2-Komponente, die mit DynamicComponentLoader erstellt wurde
@Component({
selector: 'child-component',
template: '<input type="text" [(ngModel)]="thing.Name" />'
})
class ChildComponent {
@Input() thing : any;
}
und ein Elternteil wie:
@Component({
selector: 'my-app',
template: 'Parent (<div #child></div>)'
})
class MyApp {
thing : any;
constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {
dcl.loadIntoLocation(ChildComponent, elementRef, 'child');
}
}
Wie soll ich mich über thing
in die untergeordnete Komponente, so dass die beiden Komponenten vorbei gegen die gleiche gebunden Daten sein Ding.
Ich habe versucht, dies zu tun:
@Component({
selector: 'my-app',
template: 'Parent (<div #child></div>)'
})
class MyApp {
thing : any;
constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {
dcl.loadIntoLocation(ChildComponent, elementRef, 'child').then(ref => {
ref.instance.thing = this.thing;
});
}
}
Es Art funktioniert, aber sie sind wie man es erwarten würde, nicht synchronisiert.
Im Grunde versuche ich dasselbe zu erreichen, was mit ng-include in Winkel 1 erreicht worden wäre, wo das Kind eine dynamisch bestimmte Komponente ist und das Modell mit seinem Elternteil teilt.
Vielen Dank im Voraus ...
Sie EventEmitter für diesen Fall nutzen können, lesen Sie in diesem [plnkr] (http://plnkr.co/edit/SHc0yeUOSqn0pITXztHa?p=preview) –
Das ist eine interessante Idee ist und bringt mich zum Grübeln. Ich bin mir nicht sicher, ob es für mein Szenario völlig geeignet ist. Was ich wirklich versuche, ist, zwei Komponenten zu haben, die beide zwei Hälften eines Formulars darstellen, das ein einzelnes Modell bearbeitet. Danke, aber ich denke, es wird immer noch nützlich sein. –