常量服务变量 Angular
Constant Service variable Angular
我在 angular 中有一项服务,我在其中存储了一个名为 array_item
的数组,该数组是从我的 api 调用中获得的,并且在组件中我声明了 2 个名为 var_1
的变量和 var_2
两者都具有我从服务中获得的相同值
即:var_1 = this.service.array_item
&& var_2 = this.service.array_item
我在我的 HTML 中将它列为 2 个 DIV 的列表,但是当我更新 list_1 中的值时,它会更改服务中的数组项值,这会自动更改我的数组项数据在 list_2。我不希望列表 2 发生变化,我希望它保持不变。欢迎提出建议或解决方案。
提前致谢
是的,这种行为很明显,因为 JavaScript 是 按引用传递 。因此,您可以通过在组件级别保留原始数组的另外 2 个副本来解决问题。
可以按照此 Reference
中的说明进行复制
然后组件代码会像,
var_1 = this.service.array_item.copy() // Implement copy function
var_2 = this.service.array_item.copy() // Implement copy function
发生这种情况是因为您为两个变量分配了相同的值,或者您可以将其称为浅拷贝。您只需要使用深度克隆来克隆值。最简单的方法是:
var_1 = this.service.array_item
var_2 = JSON.parse(JSON.stringify(this.service.array_item))
OR
var_2 = [...this.service.array_item]
OR
var_2 = this.service.array_item.slice()
有关深拷贝与浅拷贝的更多参考,您可以查看此link
我在 angular 中有一项服务,我在其中存储了一个名为 array_item
的数组,该数组是从我的 api 调用中获得的,并且在组件中我声明了 2 个名为 var_1
的变量和 var_2
两者都具有我从服务中获得的相同值
即:var_1 = this.service.array_item
&& var_2 = this.service.array_item
我在我的 HTML 中将它列为 2 个 DIV 的列表,但是当我更新 list_1 中的值时,它会更改服务中的数组项值,这会自动更改我的数组项数据在 list_2。我不希望列表 2 发生变化,我希望它保持不变。欢迎提出建议或解决方案。
提前致谢
是的,这种行为很明显,因为 JavaScript 是 按引用传递 。因此,您可以通过在组件级别保留原始数组的另外 2 个副本来解决问题。
可以按照此 Reference
中的说明进行复制然后组件代码会像,
var_1 = this.service.array_item.copy() // Implement copy function
var_2 = this.service.array_item.copy() // Implement copy function
发生这种情况是因为您为两个变量分配了相同的值,或者您可以将其称为浅拷贝。您只需要使用深度克隆来克隆值。最简单的方法是:
var_1 = this.service.array_item
var_2 = JSON.parse(JSON.stringify(this.service.array_item))
OR
var_2 = [...this.service.array_item]
OR
var_2 = this.service.array_item.slice()
有关深拷贝与浅拷贝的更多参考,您可以查看此link