首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确地使用角度10的可观测值,值永远不变。

正确地使用角度10的可观测值,值永远不变。
EN

Stack Overflow用户
提问于 2020-09-01 20:33:54
回答 2查看 152关注 0票数 0

我试图了解如何使用角10中的可观测值来加载指示符,以及在一些图形10函数中进行数据更改。我错过了一些我不明白的基本实现。

让我们以加载指示器的布尔值为例。

因此,在我的组件类中,我有以下内容:

代码语言:javascript
复制
private readonly loading = new Subject<boolean>();
get loading$(): Observable<boolean> {
 return this.loading;
}

在模板html文件中,我有以下内容:

代码语言:javascript
复制
{{(this.loading$ | async) ? 'true' : 'false'}}

问题是它总是打印false

ngOnInit()函数中,我添加了this.loading.next(true);,但是html模板仍然打印false

我错过了什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2020-09-01 20:45:52

好吧,我不会用赛特的。我只会做这样的事:

代码语言:javascript
复制
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,以显示流值的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63695084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档