Документы DynamicContentLoader не объясняют, как я могу правильно загружать входные данные дочернего компонента. Скажем, у меня есть ребенок, как:Как передать параметры @Input() в угловой компонент 2, созданный с помощью DynamicComponentLoader
@Component({
selector: 'child-component',
template: '<input type="text" [(ngModel)]="thing.Name" />'
})
class ChildComponent {
@Input() thing : any;
}
и родителей, как:
@Component({
selector: 'my-app',
template: 'Parent (<div #child></div>)'
})
class MyApp {
thing : any;
constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {
dcl.loadIntoLocation(ChildComponent, elementRef, 'child');
}
}
Как я должен идти о прохождении thing
в компонент ребенка таким образом, что два компонента могут быть данные, связанные с тем же вещь.
Я пытался сделать это:
@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;
});
}
}
Это вроде работает, но они не синхронизированы, как можно было бы ожидать.
В основном я пытаюсь достичь того же, что было бы достигнуто с помощью ng-include в угловом 1, где ребенок является динамически определенным компонентом и разделяет модель с ее родителем.
Заранее спасибо ...
Вы можете использовать EventEmitter для этого случая, проверить это [plnkr] (http://plnkr.co/edit/SHc0yeUOSqn0pITXztHa?p=preview) –
Это интересная идея и заставляет задуматься. Я не уверен, что это вполне подходит для моего сценария. То, что я действительно пытаюсь сделать, состоит из двух компонентов, которые представляют две половины формы, которая редактирует одну модель. Спасибо, хотя, я думаю, он по-прежнему пригодится. –