This plnker, вероятно, самый быстрый способ, чтобы увидеть проблемуПроблема с привязкой и @ViewChild
я не уверен, если это просто какой-то явный глюк при использовании ViewChild, но это очень странно.
plunker показывает 3 входа:
- Первый вход является основным входом и кнопка, которая может сфокусировать его.
- Второй вход привязан к одному и тому же значению, и нажатие на редактирование будет разблокировать вход.
- Третий вход также привязан к одному и тому же значению, и щелчок по изменению откроет вход и даст ему фокус.
Однако при добавлении ViewChild для получения ссылки на ввод привязка NgModel на входе перестает работать. Но любые другие привязки, которые вы прикрепляете (например, отключенные), по-прежнему будут продолжать функционировать. Если вы прокомментируете строку 52 приложения/extended.component, она снова свяжется, но, очевидно, теперь она не может сфокусироваться.
Первый вход/кнопка показывает, что это, по-видимому, только проблема, когда вы привязываетесь к свойству из класса, который вы расширяете.
Вкратце, когда я получаю доступ к вводу через ViewChild, моя привязка к разрыву NgModel.
То есть, учитывая базу со свойством "SomeValue": Становится персональным:
@Component({
selector: 'binding-working',
template: `<input type="text" [(ngModel)]="someValue" />`
})
export class Working extends Base<string> {
constructor() { }
};
Не связывает:
@Component({
selector: 'binding-broken',
template: `<input type="text" #imBroken [(ngModel)]="someValue" />`
})
export class Broken extends Base<string> {
@ViewChild('imBroken') input;
constructor() { }
};