更新数组对象而不克隆它

时间:2018-02-26 13:53:14

标签: javascript angular typescript pointers

我试图通过参数传递指向函数的指针,因此该函数可以更新对象的参数。该对象使用{{tasks}}文件中的tasks.component.html绑定到视图。不知何故,我在provideAndDisplayTasks()函数中所做的突变似乎根本不会改变tasks中的tasks.component.ts属性。我也有类似的代码。它正确地更新了对象。我不明白为什么它在这种情况下不起作用。

如何在不克隆阵列的情况下更新阵列?

tasks.component.ts:

private provideAndDisplayTasks() {
  const self = this;
  self.tasks.push(new Task());
  console.log('self.tasks', self.tasks);
  this.tasksRepository.provideTasks(self.tasks);
}

任务-repository.ts:

public provideTasks(tasks: Task[]) {
  console.log('parameter', tasks);
  this.get('truelime.task/all').subscribe(
    data => this.addTasksToTaskArray(tasks, data),
    error => {
      if (error.status === 401) {
        this.router.navigateByUrl('login');
      }
      Logger.getInstance().logError(error);
    }
  );
}

private addTasksToTaskArray(tasks: Task[], tasksDto) {
  const taskArray = tasksDto.truelime_tasks[0].TrueLime_Task;
  for (let i = 0; i < taskArray.length; i++) {
    const taskDto = taskArray[i];
    const task = new Task();
    task.id = taskDto.TaskID;
    task.title = taskDto.TaskTitle;
    task.description = taskDto.TaskDescription;
    task.status = taskDto.TaskStatus;
    tasks.push(task);
    console.log('tasks', tasks);
  }
}

控制台日志:

console logs

0 个答案:

没有答案