这个 plnker可能是查看问题的最快方法
我不确定在使用 ViewChild 时是否只是一些明显的问题,但这很奇怪。
plunker 显示 3 个输入:
- 第一个输入是一个基本输入和一个可以聚焦它的按钮。
- 第二个输入绑定到相同的值,单击编辑将解锁输入。
- 第三个输入也绑定了相同的值,点击编辑将解锁输入并赋予它焦点。
但是,当添加 ViewChild 以获取对输入的引用时,输入上的 NgModel 绑定停止工作。但是您附加的任何其他绑定(如禁用)仍将继续起作用。如果您注释掉 app/extended.component 的第 52 行,它将再次绑定,但显然现在它无法聚焦。
第一个输入/按钮表明,这显然只是当您绑定到您正在扩展的类的属性时的问题。
简而言之,当我通过 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() { }
};