我需要创建对象的克隆,而不需要创建对象的引用。当我试图复制EquipmentClass时,女巫是我对它的克隆的主要对象,如果我更改EquipmentClass的某些属性,它也会改变我的EquipmentClassCloneEdit。我不希望这种事发生。
我试着像这样分配价值:
this.equipmentClassCloneEdit = Object.assign({}, this.equipmentClass);这是我的模型:
export class EquipmentClass {
equipmentClassId: number;
name: string;
description: string;
isDeleted: boolean;
propertyValuesList: EquipmentClassPropertyValue[] = [];
}发布于 2019-07-19 19:05:11
试试this.equipmentClassCloneEdit = JSON.parse(JSON.stringify(this.equipmentClass))
Object.assign()创建一个浅拷贝,这样它就不会在非原语(如propertyValuesList数组)上工作。
发布于 2019-07-19 19:23:38
您可以使用lodash的cloneDeep方法来进行深度克隆。https://lodash.com/docs/#cloneDeep
import cloneDeep from 'lodash/cloneDeep';this.equipmentClassCloneEdit = cloneDeep(this.equipmentClass);使用这种克隆函数可以更好地从字符串化到解析解决方案,因为它还保留了JSON在字符串化时(如函数、符号、BigInts等)所包含的成员。
https://stackoverflow.com/questions/57118210
复制相似问题