當在<input>
上通過[ngModel]
使用單向綁定時,在輸入中輸入字符總是會將字符添加到<input>
的值中。問題是,如果[ngModel]
表達式繼續返回其現有值,則<input>
值不會刷新。Angular 2 + ngrx/store:單向綁定到<input>
下面是一個簡單的例子:
@Component({
selector: 'my-component',
template: `
<input type="text" [ngModel]="foo.bar" />
`
})
export class MyComponent {
private foo = {
bar: 'baz'
};
}
我期望的輸入,總是顯示「巴茲」不管用戶輸入的,但這種情況並非如此。
我正在尋找這種行爲的原因是ngrx/store/redux應用程序,其中<input>
的值應該由狀態單向流動來確定。我創建了一個example use case on Plunker,Misko Hevery的描述不應該是可編輯的。該模型確實沒有改變,但<input>
顯示任何用戶類型。
在「No trackBy」部分,它正常工作,但僅僅是因爲Angular重畫了所有強制進行適當重新評估(但不是解決方案)的DOM元素。將disabled
或readonly
屬性添加到<input>
對我來說不是一個可接受的答案,因爲組件應該不知道可能複雜的狀態邏輯,該邏輯不允許更改此字段。
我在React Redux中看到過這種行爲,我想知道如何在Angular 2中使用單向綁定,如果我們不能阻止用戶改變他們自己的視圖。
你找到任何解決方案? – Marcel