在Angular服务中获取Subject.asObservable()的当前值

Som*_*der 6 subject rxjs typescript angular2-services angular

我想在Angular2服务中编写一个简单的切换.

因此,我需要Subject观察的当前值(见下文).

import {Injectable} from 'angular2/core';
import {Subject} from 'rxjs/Subject';

@Injectable()

export class SettingsService {

  private _panelOpened = new Subject<boolean>();
  panelOpened$ = this._panelOpened.asObservable();

  togglePanel() {
    this._panelOpened.next(!this.panelOpened$);
  }

}
Run Code Online (Sandbox Code Playgroud)

如何从_panelOpened/panelOpened $中获取当前值?

谢谢.

Gün*_*uer 9

似乎您正在寻找BehaviorSubject

private _panelOpened = new BehaviorSubject<boolean>(false);
Run Code Online (Sandbox Code Playgroud)

如果您订阅,则将最后一个值作为第一个事件.

togglePanel() {
  this.currentValue = !this.currentValue;
  this._panelOpened.next(this.currentValue);
}
Run Code Online (Sandbox Code Playgroud)

  • BehaviorSubject实际上通过名为"getValue"的实例方法公开其当前值; 没有必要订阅获取它. (4认同)