ngIf块内的可观察角度rxjs错过第一次更新

时间:2019-11-08 11:27:29

标签: angular rxjs angular-template

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

第二个可观察对象没有从ngIf-Block内部的源获取第一个更新。 另一方面,它在ngIf-Block之外有效。

对此意外行为有任何解释吗?

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

1 个答案:

答案 0 :(得分:5)

之所以会这样,是因为number$是主题,并且在*ngIf中使用,这意味着它仅在创建此模板块之后才订阅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