I documenti di DynamicContentLoader non spiegano come caricare correttamente gli input di un componente figlio. Diciamo che ho un bambino come:Come passare i parametri @Input() a un componente angolare 2 creato con DynamicComponentLoader
@Component({
selector: 'child-component',
template: '<input type="text" [(ngModel)]="thing.Name" />'
})
class ChildComponent {
@Input() thing : any;
}
e un genitore come:
@Component({
selector: 'my-app',
template: 'Parent (<div #child></div>)'
})
class MyApp {
thing : any;
constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {
dcl.loadIntoLocation(ChildComponent, elementRef, 'child');
}
}
Come devo fare per passare thing
nella componente figlio tali dati che i due componenti possono essere vincolati contro lo stesso cosa.
Ho provato a fare questo:
@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;
});
}
}
E 'sorta di opere, ma non sono sincronizzati come ci si aspetterebbe.
Fondamentalmente sto cercando di ottenere la stessa cosa che sarebbe stata ottenuta utilizzando ng-include in angular 1 dove il bambino è un componente determinato dinamicamente e condivide il modello con il suo genitore.
Grazie in anticipo ...
È possibile utilizzare EventEmitter per questo caso, controllare questo [plnkr] (http://plnkr.co/edit/SHc0yeUOSqn0pITXztHa?p=preview) –
E 'un'idea interessante e mi fa pensare Non sono sicuro che sia del tutto adatto al mio scenario. Quello che sto cercando di fare è avere due componenti che rappresentano entrambe due metà di un modulo che sta modificando un singolo modello. Grazie però, penso che tornerà utile. –