有以下代码,我想知道为什么 Subject.next(1)
在模板中看不到发射,而BehaviorSubject.next()
发射是可见的。
我知道将它包裹在里面可以setTimeout()
修复它,但我想理解它。
我似乎Subject.next()
是同步的,async
管道没有接收/标记检查。
@Component({
selector: 'my-app',
template: `
<div>Subj: {{ subj$ | async }}</div>
<div>BehavSubj: {{ behavSubj$ | async }} </div>
<div>Interval: {{ interval$ | async }} </div>
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
subj$ = new Subject<number>();
behavSubj$ = new BehaviorSubject<number>(1);
interval$ = interval(1000).pipe(take(100));
ngOnInit(): void {
this.subj$.next(1);
this.behavSubj$.next(2);
}
}
https://stackblitz.com/edit/angular-ivy-crnfgc?file=src/app/app.component.ts