我有两个可观察对象。第一个 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
订阅它,它会按照您的预期重播和更新最后的值。
关于ngIf-block 中可观察到的 Angular rxjs 错过第一次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58765694/