javascript - 与常规可观察对象相比,Angular HTTP 可观察对象的行为有所不同?

标签 javascript angular rxjs

当我在 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/

相关文章:

angular - Angular 6 和 Karma 的随机测试失败

html - PrimeNg 的 <pcalender> 中的日期验证逻辑

javascript - 如果有效负载长度 < 1,则返回不同的可观察值

angular - 如何处理 Angular 延迟订阅

javascript - 客户端 JavaScript 最佳实践

javascript - 向数据表添加行时遇到问题

javascript - Angular 6 Validators.pattern() 正则表达式不起作用

angular - concatMap 没有得到后续存储发出

javascript - 如何 1).放一个 div , 2).在 v6 React 中使用 React Router 在 <Routes> 中渲染没有 Route 的组件?

php - 如何让 mysql 数据库 id 随机回显?