2017-04-21 91 views
1

我有一個待辦事項列表項目,其中每個條目都是輸入(內聯修改)。`[(ngModel)]`沒有從控制器中獲得價值,如何解決?

<div *ngFor="let t of todos;" class="list-item"> 
    <span class="list-item__checkbox">&nbsp;</span> 
    <textarea class="todo-item__textarea" 
    (input)="onTodoKeyEvent($event, t)" 
    (keydown)="onTodoKeyEvent($event, t)" 
    ([ngModel])="t.text" 
    ></textarea> 
    {{t.text}} 
</div> 

onTodoKeyEvent方法調用更新函數,以更新數組中的待辦事項數據。

onTodoKeyEvent(event, todo) { 
    this.updateTodo({ 
    id: todo.id, 
    text: event.target.value + 'additional text' 
    }); 
} 

我用得到的待辦事項到來自服務控制器的getter:

get todos(): Todo[] { 
    return this.todoDataService.get(); 
} 

更新功能:

update(data: Todo) { 
    let todo = this.todos[data.id]; 
    Object.assign(todo, data); 
} 

的問題是,我可以在todos陣列看到新的數據,並在視圖在{{t.text}},但textarea中的值(模型值)與鍵入的值相同,因此感覺像單向綁定。 enter image description here

爲什麼會這樣,我該如何解決它?謝謝。

回答

3

這是[(ngModel)]="t.text",而不是([ngModel])="t.text"

他們稱之爲Bananas in a box

這是框:[ ] 而這些都是香蕉:()

+0

滑稽;)謝謝你,我迷失了。 – Georgy

+0

@Georgy這種事情經常發生在我身上......請考慮接受答案,如果它適合你:) –

+0

你甚至在問題標題中使用了正確的語法,哈哈。 – zigzag