Lee*_*287 0 behaviorsubject angular
由于多种原因,这不是重复的。1.我使用的是角度7,而不是角度2。2.我使用的是rxjs6,而不是rxjs5。学习这些较早的版本已不存在,我对此无益。3.当这个问题没有提到Observable(boolean)时,我问的是Observable(boolean)概念
我创建了一个Observable值,希望从中得出true / false。这是我在nav.component.ts文件中的代码
export class NavComponent implements OnInit {
private $loggedin: Observable<boolean>;
constructor( private auth: AuthenticationService){}
ngOnInit() {
this.$loggedin = this.auth.$isLoggedinSource;
console.log('am i logged in ', this.$loggedin);
}
Run Code Online (Sandbox Code Playgroud)
控制台输出为:
am i logged in Observable {_isScalar: false, source: BehaviorSubject}
source: BehaviorSubject {_isScalar: false, observers:
Array(0), closed: false, isStopped: false, hasError:
false, …}
_isScalar: false ...
Run Code Online (Sandbox Code Playgroud)
如何从$ loggedin中获取布尔值,真/假值?
您可以通过两种方式解包Observable的值。
通过使用async模板中的管道:
<p>Am I logged In: {{ $isLoggedinSource | async }}</p>
要么
subscribe查看组件中的Observable:import { Subscription } from 'rxjs';
...
subscription: Subscription;
...
this.subscription = this.$loggedin
.subscribe(data => console.log('am i logged in ', data));
...
ngOnDestroy() {
this.subscription.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)
如果该$loggedinObservable重复发生,并且您使用了方法2,则必须将其分配给一个Subscription类型化的属性,然后在中调用unsubscribe它ngOnDestroy。
使用第一种方法,您实际上并不需要这样做。
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |