我正嘗試創建一個簡單的組件來輸入文本。 但是,如果其值發生更改,則會發生錯誤。Angular2 - 雙向綁定錯誤:檢查後表達式已更改
我已經檢查了一些關於這個錯誤的文章。 其中一人說'應該使用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';
}
我想你只需要從輸入中移除偏愛,就像這樣:' '。我認爲發生錯誤是因爲應該沒有雙向數據綁定。 –
@alexkucksdorf這裏的要點是當孩子發生變化時能夠通知父母的雙向綁定。所以這裏需要雙向綁定:) – Alex