与常规的observable相比,Angular HTTP observable的行为有所不同?

时间:2018-04-04 14:28:33

标签: javascript angular rxjs

当我在Angular中弄乱路由时,我尝试使用内存数据库来获取英雄。

最初的StackBlitz是https://stackblitz.com/angular/yoerxnmrbod

如果你去英雄标签,点击一个英雄,并更改他的名字,更改将反映在列表中。

我将数据备份的方式更改为内存数据库中的角度。

https://stackblitz.com/edit/angular-ke7pxn-vxp9hi?file=src/app/app.module.ts

如果您遵循与上述相同的工作流程,则详细信息组件中的名称更改不会反映在列表中。为了获得相同的功能,我缺少什么?

1 个答案:

答案 0 :(得分:1)

似乎原因是当你在hero.service中将HEROES设置为const然后传递一个单独的英雄并更改他的名字时,你的HEROES数组元素中的名称会被更改(因为它是一个对象数组) ,即使它是const,它的元素和它们的属性也可以改变)。在第二个实现中,你总是得到一个新的英雄数组实例。如果你想保存一些更改,你应该将它存储在你的服务中并使用像一个简单的数组(没有异步管道),而不是每次都从你的模拟后端接收它。