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

rob*_*011 1 rxjs angular-template angular

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

第二个可观察到的对象不会从ngIf-Block内部的源获得第一个更新。另一方面,它在ngIf-Block之外起作用。

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

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

mar*_*tin 5

发生这种情况是因为number$它是Subject,并且在*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