Ответ 1
Я сделал несколько тестов для вашей проблемы, и я не могу воспроизвести их.
Вот содержимое моего дочернего компонента:
@Component({
selector: 'child-component',
template: `
<div>
Child component - <input type="text" [(ngModel)]="thing.name" />
</div>
`
})
export class ChildComponent {
@Input() thing : any;
constructor() {
}
}
Вот содержимое родительского компонента:
@Component({
selector: 'my-dyn-parent',
template: `
<div>
Parent component - <input type="text" [(ngModel)]="thing.name" /> (<br/>
<div #child></div>
<br/>)
</div>
`
})
export class ParentComponent {
thing : any;
constructor(dcl: DynamicComponentLoader, elementRef: ElementRef) {
this.thing = { name: 'test name' };
dcl.loadIntoLocation(ChildComponent, elementRef, 'child')
.then((compRef:ComponentRef) => {
compRef.instance.thing = this.thing;
});
}
}
Итак, у меня есть два входа, связанных с одним и тем же элементом: один в родительском компоненте и один в дочернем. Когда я обновляю значение на одном входе, другое значение обновляется на другом входе.
Таким образом, оба компонента совместно используют один и тот же экземпляр и могут его обновлять. Возможно, я пропустил что-то в вашем прецеденте, поэтому не стесняйтесь говорить мне!
Надеюсь, это поможет вам, Thierry