Angular 2 - 更新ngModel

时间:2016-11-01 14:24:05

标签: angular angular-forms

我有一个表格列表。当用户单击表时,会发生这种情况:

(click)="selectedTable=table"

一个新的表单外观,允许编辑selectedTable。 表单包含以下输入:

<md-input [(ngModel)]="selectedTable.name" name="name"></md-input>

还有一个更新更改的按钮..

<button (click)="updateTable(selectedTable)">Update</button>

和取消按钮: 取消

我的问题

当我更新输入时,表格列表(界面)也会改变,因此输入中的内容也会改变。但是,当我更改输入然后单击&#34;取消&#34; 时,接口会显示包含更新表的表列表,该表仅在界面中更新,而不是在我的服务器端更新(因为我没有点击更新。

如何点击取消时还原对selectedTable所做的更改?

或换句话说:如何通过输入更改我的表格,并在点击更新后才在界面中更新?

1 个答案:

答案 0 :(得分:0)

要仅在单击更新时进行更新,您需要将任何修改后的值与未修改的版本分开存储。在这种情况下,这意味着您需要绑定[(ngModel)]="newTable.name"或类似的东西,然后只有在运行更新功能时才会指定selectedTable = newTable

这是必需的原因是因为双向绑定是近实时更新机制。对您的输入所做的任何更改都会立即反映在您的[(ngModel)]

为了正常工作,您需要实施NgOnInit为模型分配selectedTable的值,然后为了处理新表格成为selectedTable您需要实施NgOnChanges并观看selectedTable变量。