Этот plnkr, вероятно, самый быстрый способ увидеть проблему
Я не уверен, что это просто какая-то очевидная ошибка при использовании ViewChild, но это очень странно.
Плункер показывает 3 входа:
- Первый вход — это основной вход и кнопка, которая может сфокусировать его.
- Второй вход связан с тем же значением, и щелчок по редактированию разблокирует ввод.
- Третий ввод также связан с тем же значением, и нажатие кнопки «Редактировать» разблокирует ввод и переведет на него фокус.
Однако при добавлении ViewChild для получения ссылки на ввод привязка NgModel к вводу перестает работать. Но любые другие привязки, которые вы прикрепите (например, отключенные), по-прежнему будут продолжать работать. Если вы закомментируете строку 52 app/extended.component, он снова свяжется, но, очевидно, теперь он не сможет сфокусироваться.
Первый ввод/кнопка показывает, что это, по-видимому, проблема только тогда, когда вы привязываетесь к свойству из класса, который вы расширяете.
Короче говоря, когда я получаю доступ к вводу через ViewChild, моя привязка к NgModel прерывается.
То есть, учитывая базу со свойством "someValue": Binds:
@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() { }
};