【问题标题】:Angular HTTP observables behave differently compared to regular observables?与常规可观察对象相比,Angular HTTP 可观察对象的行为不同?
【发布时间】:2023-04-10 22:06:01
【问题描述】:

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

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

如果你进入英雄标签,点击一个英雄,然后改变他的名字,改变就会反映在列表中。

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

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

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

【问题讨论】:

  • 您没有配置服务或调用 createDb()。好像不完整。
  • @chrispy 哪个服务?我遵循了使内存数据库正常工作所需的基本原理。我没有做任何日志记录等,因为这对于我想要展示的东西来说似乎是多余的。这就是我作为示例的基础。 stackblitz.com/angular/ybbpegbnnlq

标签: javascript angular rxjs


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多