我有两个观察点。第一个observable用于ngIf-Block语句。 第二个可观察对象用于ngIf-Block内部,并映射第一个可观察对象的值。
第二个可观察对象没有从ngIf-Block内部的源获取第一个更新。 另一方面,它在ngIf-Block之外有效。
对此意外行为有任何解释吗?
示例:https://stackblitz.com/edit/angular-rxjs-template-update-problem
答案 0 :(得分:5)
之所以会这样,是因为number$
是主题,并且在*ngIf
中使用,这意味着它仅在创建此模板块之后才订阅sum$
,并且在sum$
被创建后才发生已用this.number$.next(1)
更新。
因此,您可以使用ReplaySubject(1)
来代替,它将最新项目重播给每个新订户,因此,async
中的模板*ngIf
管道对其进行订阅时,它将获得最后一个值重播并按您的期望进行更新。