javascript - 在不更改其原始值的情况下取回对象值 - Angular
问题描述
嗨,我在 Angular 中有一个表单,我使用来自 API 的 Observable 的值构建它。
.subscribe((res) => {
this.data = res['attributes'];
});
//this.data 是对象数组!!
this.attribs = modifyClean(this.data);
this.attribsOriginal = this.attribs;
Object.freeze(this.attribsOriginal);
使用 this.attribs 构建表单后。如果用户编辑其原始表单值并单击保存,则 api 将其保存。但是,如果 API 无法保存(500 错误或其他问题),我希望表单恢复其原始值。我不是故意使用响应式表单。但是当api在错误代码中失败时,这就是我正在做的事情
,error {
this.attribs = this.attribsOriginal;
}
但这并不是用原始值替换表单值。它保留了价值观。我在错误块中控制台记录 this.attribs 和 this.attribsOriginal。它们都是相同的值。这怎么可能。我冻结了attribsOriginal。如果我说 this.attribs = []; 表单已按预期完全删除。但是为什么不 this.attribs = this.attribsOriginal,用原始值替换表单值。我认为无论您对 this.attribs 做什么,冻结 this.attribsOriginal 都不会产生任何影响。可以做些什么来避免这种情况?
解决方案
推荐阅读
- c++11 - 用于 constexpr 深度和 IEEE 754 指数计算的 NVIDIA nvcc 编译标志
- c# - 无法创建 X 类型的常量值
- visual-studio-code - 如何测试我为 vscode 创建的 webview 扩展?
- javascript - JQuery'OR'运算符组合两个变量
- matlab - (Matlab)奇怪的精度损失,同时将复数矩阵分配给局部变量
- django - 在 django 中同时使用浏览量计数器和缓存的问题
- node.js - istanbul-middleware 显示“未收集到覆盖信息”
- vba - 删除行+根据列中的部分文本匹配上移
- excel - 删除单元格范围周围的网格线
- angular - 针对不同客户的不同版本