Это происходит потому, что number$
является субъектом и используется внутри *ngIf
, что означает, что он подписывается на sum$
только после создания этого блока шаблона, и это происходит после обновления sum$
с помощью this.number$.next(1)
.
Итак, вы можете использовать ReplaySubject(1)
, вместо этого он будет воспроизводить свой последний элемент каждому новому подписчику, поэтому, когда шаблон async
pipe внутри *ngIf
подписывается на него, он получает последнее значение и воспроизводится по мере вашего обновления. ожидайте.
Ваше обновленное демо: https://stackblitz.com/edit/angular-rxjs-template-update-problem-xb5f3s?file=src/app/app.component.ts