我有一个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的当前值.我该怎么做?

推荐答案

SubjectObservable没有当前值.当一个值被发出时,它被传递给订阅者,Observable就完成了.

如果你想有一个当前值,使用BehaviorSubject,它正是为这个目的而设计的.BehaviorSubject保留最后发出的值,并立即将其发送给新订户.

它还有一个方法getValue()来获取当前值.

Javascript相关问答推荐

单击按钮后未清除 Select

如何使用JavaScript动态地将CSS应用于ToDo列表?

在JavaScript中对大型级联数组进行切片的最有效方法?

容器如何更改默认插槽中子项的显示?

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

如何修复循环HTML元素附加函数中的问题?

materialized - activeIndex返回-1

从PWA中的内部存储读取文件

如何在Javascript中的控制台上以一行形式打印循环的结果

为什么ngModel不能在最后一个版本的Angular 17上工作?'

查找最长的子序列-无法重置数组

如何在输入元素中附加一个属性为checkbox?

ChartJs未呈现

映射类型定义,其中值对应于键

当用户点击保存按钮时,如何实现任务的更改?

P5.js中矩形内的圆弧

用Reaction-RT-Chart创建实时条形图

$GTE的mongoose 问题

在传单的图像覆盖中重新着色特定 colored颜色 的所有像素

如果查询为空,则MongoDB将所有文档与$in匹配