在Angular中给列表重签值的问题

问题描述 投票:0回答:1

你好,我有一个项目列表listOfPhasesWithTasks,我从backEnd获得。我把它分配给一个本地变量filteredPhasesWithTasks,我在项目的其他部分使用它。它应该是作为一个备份来使用的。当我像这样做过滤的时候。

 this.filteredPhasesWithTasks.forEach((phase) => {
                    phase.tasks = phase.tasks.filter(task => task.taskName !== null && task.taskName.toUpperCase().includes(filterParam.taskName.toUpperCase()));
                });

我不明白为什么这也会改变我的listOfPhasesWithTasks。我希望它能像代码中说的那样只改变filteredPhasesWithTasks。

html typescript angular7
1个回答
1
投票

在Javascript(和Typescript)中,对象被传递了。参照.

这意味着如果你有一个对象,并把它分配给一个新的对象,你不会重复这个对象,你只是从两个变量中获得对第一个对象的引用。因此,改变你所分配的变量中的一个字段 "改变了两个变量"。实际上,改变的是被两个变量都指向的唯一存在的对象 :P

你可以考虑使用 cloneDeep 库提供的方法 Lodash. 你会发现很多其他有用的快捷方式:)

© www.soinside.com 2019 - 2024. All rights reserved.