angular - ngModel 的撤消更改不会反映视图中的结果
问题描述
我有一个项目表,表格单元格是内联可编辑的。我想实现一个功能来撤消对每个单元格的更改,所以我在开始时复制了数组的每个对象。
this.mapedArr = this.arr.map(i => {
i.oldValues = Object.assign({}, i);
return i;
})
然后单击取消后,我复制旧值而不是新值。
cancel(i) {
i = Object.assign({}, i.oldValues);
}
如果您检查stackblitz,我尝试在其中实现我所拥有的一个小示例,您可以在控制台中看到值更改回旧值但不反映视图中的结果。问题出在哪里?
解决方案
发生这种情况是因为您传递给cancel
函数的项目与您的temp
.
你可以想出的是这样的:
cancel(item) {
const {name, city} = item.oldValues;
this.mapedArr[this.mapedArr.indexOf(item)] = {...this.mapedArr[this.mapedArr.indexOf(item)], name, city}
}
推荐阅读
- haskell - 组合两个函数以将它们应用于相同的输入
- c++ - 如何在 switch 语句中实现“ENTER”案例
- javascript - Mongoose:使用 deleteMany 挂钩删除引用的 ObjectId
- c++ - 为什么我的 Active Directory 密码过滤器 DLL 中的用户名以 $ 结尾?
- reactjs - 对所有 Axios 请求使用 Auth0 React Hook
- c# - 从 Mongo 获取特定的集合列表
- r - 为 geom_line 的特定行分配颜色
- azure-cosmosdb - UDF 将天数添加到时间戳
- node.js - 衍生进程中的网络访问失败
- javascript - 替换字符串中的特殊字符