ngIf-block 中可观察到的 Angular rxjs 错过第一次更新

标签 angular rxjs angular-template

我有两个可观察对象。第一个 observable 用于 ngIf-Block 语句。 第二个 observable 在 ngIf-Block 内部使用并映射第一个 observable 的值。

第二个 observable 没有从 ngIf-Block 内部的源代码获取第一个更新。 另一方面,在 ngIf-Block 之外它可以工作。

对这种意外行为有什么解释吗?

示例:https://stackblitz.com/edit/angular-rxjs-template-update-problem

最佳答案

发生这种情况是因为 number$ 是 Subject 并且它在 *ngIf 中使用,这意味着它仅在此模板 block 之后订阅 sum$被创建并且发生在 sum$this.number$.next(1) 更新之后。

所以你可以做的是使用 ReplaySubject(1) 而不是将它的最新项目重播给每个新订阅者所以当模板 async 管道进入 * ngIf 订阅它,它会按照您的预期重播和更新最后的值。

您更新的演示:https://stackblitz.com/edit/angular-rxjs-template-update-problem-xb5f3s?file=src/app/app.component.ts

关于ngIf-block 中可观察到的 Angular rxjs 错过第一次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58765694/

相关文章:

angular - 使用状态管理器时,我们是否需要在组件中存储额外的数据?

html - 从 angular 4 中的 html 中删除主机组件标签

nested - 我可以创建嵌套的 Angular 组件 HTML 选择器吗?

javascript - 使用指令将组件动态添加到子元素

javascript - ReplaySubject(1) 和 AsyncSubject() 一样吗?

javascript - 如何处理 Angular 数据表中的列不匹配?

javascript - 响应式(Reactive)编程,将一组对象映射到只有一个对象字段的数组?

Angular 将多个模板传递给 Component

angular - 跨源请求过滤掉了我的大部分 API 响应 header

node.js - 未捕获( promise ): Error: No provider for GooglePlus