Angular 2 - 更新 ngModel

Angular 2 - updating ngModel

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

(click)="selectedTable=table"

并且出现了一个允许编辑 selectedTable 的新表单。 该表单包含以下输入:

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

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

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

和一个取消按钮: 取消

我的问题

当我更新我的输入时,table 列表(界面)也会根据输入中的内容发生变化。但是,当我更改我的输入然后单击 "Cancel" 时,界面会显示 table 列表以及更新后的 table,它仅在界面中更新,并且不在我的服务器端(因为我没有点击更新)。

如何在单击取消时恢复对 selectedTable 所做的更改?

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

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

之所以需要这样做,是因为双向绑定是一种近乎实时的更新机制。对您的输入所做的任何更改都会立即反映在您的 [(ngModel)].

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