Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 更新复制对象中的值会影响角度5中所有其他复制对象的值_Angular_Typescript_Angular5 - Fatal编程技术网

Angular 更新复制对象中的值会影响角度5中所有其他复制对象的值

Angular 更新复制对象中的值会影响角度5中所有其他复制对象的值,angular,typescript,angular5,Angular,Typescript,Angular5,在组件中,我进行了http调用以从后端获取所有被分配者 组件:- const req = this.assigneeService.getAssignees(); req.subscribe( data => { this.assignees = data['data']; // On response json will be like below [ { name:"N

在组件中,我进行了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 => {       
     }
 );
单击按钮,下面的函数将调用并创建say objectM。 现在假设我用相同的方法又创建了两个相同的对象,比如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.status


请帮帮我。提前感谢。

让asignees1=this.assignees.slice(0)克隆数组但是内部的对象引用了原始数组中的对象,您需要获得对象数组的深度克隆,您可以使用以下简单技巧完成此操作:

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

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

让asignees1=this.assignees.slice(0)克隆数组但是内部的对象引用了原始数组中的对象,您需要获得对象数组的深度克隆,您可以使用以下简单技巧完成此操作:

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

然后您将克隆阵列,而不引用原始阵列。

阵列对象的深度克隆将帮助您解决此问题。请尝试此操作

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

数组对象的深度克隆将帮助您解决此问题

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

您还可以使用
Object.assign()


您也可以使用
Object.assign()