Angular で RxJS サブジェクトまたはオブザーバブルの現在の値を取得する方法は?

Mary-Kate Olsen
リリース: 2024-11-04 00:14:30
オリジナル
709 人が閲覧しました

How to Retrieve the Current Value of an RxJS Subject or Observable in Angular?

RxJS サブジェクトまたはオブザーバブルの現在の値の取得

Angular アプリケーションでは、コンポーネントとサービスの間でデータをストリーミングするためにオブザーバブルが一般的に使用されます。よく発生する質問は、オブザーバブルをサブスクライブせずに現在の値を取得する方法です。

提供されたコードでは、SessionStorage サービスは _isLoggedInSource という名前のサブジェクトを使用して、現在のログイン状態を出力します。 isLoggedIn プロパティはこのオブザーバブルを公開しますが、現在の値の概念はありません。

解決策: BehaviorSubject の使用

この問題の解決策は、Subject の代わりに BehaviorSubject を使用することです。 BehaviorSubject は、最後に発行された値を追跡し、それを新しいサブスクライバーに即座に発行します。

<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject';

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new BehaviorSubject<boolean>(false);
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}</code>
ログイン後にコピー

これで、BehaviorSubject:

の getValue() メソッドを使用して、現在のログイン状態を取得できます。
<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>
ログイン後にコピー

結論

BehaviorSubject を使用すると、サブスクライブしなくてもオブザーバブルの現在の値にアクセスできます。これは、コード内の特定のポイントで最新の出力値を読み取る必要がある場合に特に便利です。

以上がAngular で RxJS サブジェクトまたはオブザーバブルの現在の値を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!