如何在不丢失角度2/4中的引用的情况下覆盖对象

时间:2017-09-22 08:35:18

标签: angular typescript frontend

我有以下情况。我有两个实例 originalMember toSaveMember ,两个实例都是 Person 。 如何将 toSaveMember 中的所有值覆盖到 originalMember ,但仍保留与originalMember相同的引用? 这相当于:

originalMember.name = toSaveMember.name;
originalMember.age = toSaveMember.age;

我不想使用上面的解决方案,因为我不想跟踪新字段。我想要一些自动的东西 有人有任何吸烟吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用Object.assign将所有属性设置为toSaveMemberoriginalMember,同时为两者保留单独的对象引用:

Object.assign(originalMember, toSaveMember);

如果您的环境不支持ES6,那么可以使用polyfill for Object.assign旧版本。

答案 1 :(得分:0)

你可以保留旧的但添加新的东西。

private newMember(_name: string, _age: number){
  originalMember.name = toSaveMember.name;
  originalMember.age = toSaveMember.age;
  // or like @Saravana 
  originalMember = toSaveMember;

在此之后设置新名称和年龄

  toSaveMember.name = _name;
  toSaveMember.age = _age;
}

Ofc不要忘记在组件范围内声明两个对象。 (这一点。)

如果您想制作原始会员的列表,请创建一个数组并推送array[0]原始成员array[1]第二个成员中的值,依此类推。