我有一个 Angular 2 服务:
import {Storage} from './storage'; import {Injectable} from 'angular2/core'; import {Subject} from 'rxjs/Subject'; @Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new Subject<boolean>(); isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } }
一切都很好。但是我有另一个不需要订阅的组件,它只需要在某个时间点获取 isLoggedIn 的当前值。我怎样才能做到这一点?
A SubjectorObservable没有当前值。当一个值被发出时,它被传递给订阅者并Observable完成它。
Subject
Observable
如果您想获得当前值,请使用BehaviorSubject专为此目的而设计的。BehaviorSubject保留最后发出的值并立即将其发送给新订阅者。
BehaviorSubject
它还有一种getValue()获取当前值的方法。
getValue()