当我在 Angular 中处理路由时,我尝试使用内存数据库来获取英雄。
原始 StackBlitz 是 https://stackblitz.com/angular/yoerxnmrbod
如果您转到英雄选项卡,单击一个英雄,然后更改他的名字,更改会反射(reflect)在列表中。
我将数据的备份方式更改为内存数据库中的 Angular 。
https://stackblitz.com/edit/angular-ke7pxn-vxp9hi?file=src/app/app.module.ts
如果您遵循与上述相同的工作流程,详细信息组件中的名称更改不会反射(reflect)在列表中。我缺少什么才能获得相同的功能?
最佳答案
似乎原因是当你在 hero.service 中将 HEROES 设置为 const 然后传递一个单独的英雄并更改他的名字时,你的 HEROES 数组元素中的名称被更改(因为它是一个对象数组,即使它是常量,它的元素和它们的属性可以改变)。在第二个实现中,你总是得到一个新的 heroes 数组实例。如果你想保存对它的一些更改,你应该将它存储在你的服务中并像一个简单的数组一样使用(没有异步管道)而不是每次都从你的模拟后端接收它。
关于javascript - 与常规可观察对象相比,Angular HTTP 可观察对象的行为有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49653669/