【发布时间】:2019-03-22 01:24:45
【问题描述】:
详细说明我的问题,
我有一个名为hero.service.ts 的服务,它正在一个名为hero.component.ts 的组件中使用。 hero.service.ts 包含一个变量 heros,它是一个 array,包含许多项。
我通过名为getHeroes() 的函数从hero.service.ts 获取heros 的值,该函数将变量返回为return this.heros;,并通过this.heros = this.heroService.getHeroes() 获取组件上的值。
在我的组件中,在表格中列出了英雄。 当我从表中删除行时,它实际上也从 hero.service.ts 的变量 heros 中删除。
- 为什么会这样?
- 为什么它返回变量引用而不是一个值。
仅供参考,我通过返回heros 和... 传播运算符(如return [...this.heros];)来实现它。但是为什么服务传递变量的引用。请大家帮忙。
【问题讨论】:
-
嘿@sloth。这可以在 angular 1 和 javascript 中看到。但考虑到 Angular 5 是打字稿,这是怎么发生的?这背后究竟是什么。我只是想知道。
-
你能在StackBlitz中复制这个吗?很难相信:P
-
解决方法:
const refArray = JSON.parse(JSON.stringify(originalArray)) -
@YashMajithiya 问题是一样的:你将一个数组的引用从一个地方传递到另一个地方,但该引用仍然指向 同一个数组。
标签: angular angular6 angular-services angular-components