angular ngIf-block 中的 rxjs observable 错过第一次更新

angular rxjs observable inside ngIf-block miss first update

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

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

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

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

发生这种情况是因为 number$ 是 Subject 并且它在 *ngIf 内部使用,这意味着它仅在创建此模板块之后订阅 sum$ 并且发生在 [=12= 之后] 更新为 this.number$.next(1)

所以你可以做的是使用 ReplaySubject(1) 而不是将它的最新项目重播给每个新订阅者所以当 *ngIf 中的模板 async 管道订阅它时它会得到如您所愿重播和更新最后一个值。

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