【发布时间】:2020-03-02 11:03:36
【问题描述】:
您好,我在 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 都不会产生任何影响。 有什么办法可以避免这种情况?
【问题讨论】:
标签: javascript angular object mutation