首页 > 解决方案 > 更新复制对象中的值正在影响角度 5 中的所有其他复制对象值

问题描述


在组件中,我进行了 http 调用以从后端获取所有受让人。

零件 :-

 const req = this.assigneeService.getAssignees();
    req.subscribe(
      data => {
        this.assignees = data['data'];
        // On response json will be like below
        [  
         {  
           name:"Name 3",
           id:1,
           status:"Not_Assigned"
         },
         {  
           name:"Archana",
           id:2,
           status:"Not_Assigned"
          }
        ]
       },
       err => {       
     }
 );

单击按钮后,以下函数将调用并创建说 objectM。现在假设我用相同的方法创建了另外 2 个相同的对象,比如 objectM1 和 objectM2。

    public addObj1(): void {
        let asignees1 = this.assignees.slice(0);
        let objectM = new Module();
        objectM.assignees = asignees1;
      }

//onchange funtion where object is selected Object, action as string and id of user
    changeAssigneeState(object, action, assigneeId ) {

    for (let a of object.assignees) {
     if (a.id == assigneeId) {
        a.status = action;
      }
     }
    }

在 objectM 中更改 id 1 的 assignee.status。它会影响相同 id 的 objectM1 和 objectM2 的 assignee.status。

请帮帮我。提前致谢。

标签: angulartypescriptangular5

解决方案


let asignees1 = this.assignees.slice(0);克隆数组但是里面的对象引用了原始数组中的对象,你需要得到对象数组的深层克隆,你可以使用这个简单的技巧来做到这一点:

let asignees1 = JSON.parse(JSON.stringify(this.assignees));

然后,您将克隆没有对原始数组的引用的数组。


推荐阅读