我有两个观察值。第一个observable用于ngIf-Block语句。第二个Observable在ngIf-Block内部使用,并映射第一个Observable的值。
第二个可观察到的对象不会从ngIf-Block内部的源获得第一个更新。另一方面,它在ngIf-Block之外起作用。
对这种意外行为有任何解释吗?
示例:https://stackblitz.com/edit/angular-rxjs-template-update-problem
发生这种情况是因为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句