【发布时间】:2017-02-01 12:22:11
【问题描述】:
我正在尝试创建一个简单的组件来输入文本。 但是当它的值发生变化时,发生了错误。
我已经查看了一些关于此错误的文章。 其中一位说“应该使用 enableProdMode()”。 这当然是对的,但我认为这不是必要的解决方案。
请告诉我一个比 enableProdMode() 更好的解决方案。
@Component({
selector: 'text-input',
template: '<input type="text" [(ngModel)]="value"/>',
inputs: [
'value'
]
})
export class TextInput implements DoCheck {
@Input() value: string;
@Output() valueChange: EventEmitter<string> = new EventEmitter();
ngDoCheck(): void {
console.log(`ngDoCheck: value=${this.value}`);
this.valueChange.emit(this.value);
}
}
-
@Component({
template: `
<h1>Input Components</h1>
<h2>Text Input</h2>
<div>
<text-input [(value)]='textValue'></text-input>
</div>
<div>{{textValue}}</div>`
})
export class InputsPage {
textValue: string = 'Hello World';
}
【问题讨论】:
-
我认为您只需要像这样从输入中删除括号:
<text-input [value]="textvalue"></text-input>。我认为发生错误是因为不应该有双向数据绑定。 -
@alexkucksdorf 这里的重点是双向绑定能够在子级发生更改时通知父级。所以这里需要双向绑定:)
标签: angular