避免 Angular/TypeScript 变量绑定
Avoid Angular/TypeScript variable binding
我需要创建对象的克隆,而不创建它的引用。
当我尝试复制 EquipmentClass 时, 是我对其克隆的主要对象,
如果我更改一些 属性 的 EquipmentClass,它也会更改我的 EquipmentClassCloneEdit。我不希望发生这种情况。
我试过这样赋值:
this.equipmentClassCloneEdit = Object.assign({}, this.equipmentClass);
这是我的模型:
export class EquipmentClass {
equipmentClassId: number;
name: string;
description: string;
isDeleted: boolean;
propertyValuesList: EquipmentClassPropertyValue[] = [];
}
尝试this.equipmentClassCloneEdit = JSON.parse(JSON.stringify(this.equipmentClass))
Object.assign()
创建一个浅表副本,因此它不会像您的 propertyValuesList 数组那样在 non-primitives 上工作。
您可以使用lodash 的cloneDeep 方法进行深度克隆。
https://lodash.com/docs/#cloneDeep
- 安装'lodash'包
import cloneDeep from 'lodash/cloneDeep';
- 就叫它:
this.equipmentClassCloneEdit = cloneDeep(this.equipmentClass);
使用这种克隆函数最好从 stringify 然后解析解决方案,因为它还保留了 JSON 在字符串化时 ingores 的成员,例如 Functions、Symbols、BigInts 等
我需要创建对象的克隆,而不创建它的引用。 当我尝试复制 EquipmentClass 时, 是我对其克隆的主要对象, 如果我更改一些 属性 的 EquipmentClass,它也会更改我的 EquipmentClassCloneEdit。我不希望发生这种情况。
我试过这样赋值:
this.equipmentClassCloneEdit = Object.assign({}, this.equipmentClass);
这是我的模型:
export class EquipmentClass {
equipmentClassId: number;
name: string;
description: string;
isDeleted: boolean;
propertyValuesList: EquipmentClassPropertyValue[] = [];
}
尝试this.equipmentClassCloneEdit = JSON.parse(JSON.stringify(this.equipmentClass))
Object.assign()
创建一个浅表副本,因此它不会像您的 propertyValuesList 数组那样在 non-primitives 上工作。
您可以使用lodash 的cloneDeep 方法进行深度克隆。 https://lodash.com/docs/#cloneDeep
- 安装'lodash'包
import cloneDeep from 'lodash/cloneDeep';
- 就叫它:
this.equipmentClassCloneEdit = cloneDeep(this.equipmentClass);
使用这种克隆函数最好从 stringify 然后解析解决方案,因为它还保留了 JSON 在字符串化时 ingores 的成员,例如 Functions、Symbols、BigInts 等