sessionStorage.getItem
返回一个值,因此我不确定您是否能够使用
Observable.from
但我想这对你有用。这更像
Observable.of
--无论哪种方式,这都会将一个值转换为一个可观察值,该值立即发出,然后完成,这不是您想要的。
您需要创建一个自定义的可观察对象,该对象在可用时发出值。
BehaviorSubject
这一点很有用,因为任何时候你订阅它,你都会得到它的最后一个值,这将允许你获得所说的值,即使你碰巧在值设置后订阅了它。
export class AuthService {
currentuser = new BehaviorSubject<User>(sessionStorage.getItem('currentuser') as User);
authenticate() {
// Do whatever authenticate usually does ... this is an example
this.http.post<User>('/auth').subscribe(user => this.currentuser.next(user));
}
/* your other methods and properties ... */
我还将避免在组件中实现副作用(例如更新会话存储),而是在服务中实现。