我试图了解如何使用角10中的可观测值来加载指示符,以及在一些图形10函数中进行数据更改。我错过了一些我不明白的基本实现。
让我们以加载指示器的布尔值为例。
因此,在我的组件类中,我有以下内容:
private readonly loading = new Subject<boolean>();
get loading$(): Observable<boolean> {
return this.loading;
}在模板html文件中,我有以下内容:
{{(this.loading$ | async) ? 'true' : 'false'}}问题是它总是打印false
在ngOnInit()函数中,我添加了this.loading.next(true);,但是html模板仍然打印false。
我错过了什么?
谢谢
发布于 2020-09-01 20:53:08
它不是关于可观测的,而是关于角度分量的生命周期。
在ngOnInit()函数中添加了this.loading.next(true);但是html模板仍然打印false。
这还为时尚早--在模板呈现之前,在任何人听流之前,可观察到的数据就会发出一次。但是,如果将相同的代码放在ngAfterViewInit中而不是ngOnInit中,则相同的代码也能工作。
https://stackblitz.com/edit/angular-xefd3z?file=src%2Fapp%2Fapp.component.ts
发布于 2020-09-01 20:45:52
好吧,我不会用赛特的。我只会做这样的事:
loading$ = new BehaviorSubject(false);
ngOnInit() {
this.loading$.next(true)
// setTimeout should be cleared but this is just to show toggling works
setTimeout(() => {this.loading$.next(false)}, 2000)
}说明: behaviorSubject有一个初始值(false)。behaviorSubject是可观察的,因此您可以使用模板中的异步管道打印它。在ngOnInit中,behaviorSubject获取next of true,在超时后获取next of false,以显示流值的更改。
https://stackoverflow.com/questions/63695084
复制相似问题