1. ホーム
  2. angular

[解決済み] Observableからサブスクライブせずに現在値を取得する(1回だけ値が必要)

2023-08-30 12:04:51

質問

Observableを購読せずに、現在の値を取得するにはどうしたらよいでしょうか。私は現在の値が一度だけ欲しいだけで、新しい値がどんどん入ってくるわけではありません。

どのように解決するのですか?

あなたは ビヘイビアサブジェクト ,

  • BehaviorSubjectはReplaySubjectと似ていますが、最後のパブリケーションだけを記憶しているのが特徴です。
  • BehaviorSubject はまた、それにデフォルト値である T を提供する必要があります。 (すでに完了している場合を除き)。

Observableが発行した最新の値が表示されます。

BehaviorSubjectでは getter という名前のプロパティがあります。 value という名前のプロパティに渡された最新の値を取得します。


スタックブリッツ

  • この例では、値 'a' がコンソールに書き込まれます。

//Declare a Subject, you'll need to provide a default value.
const subject: BehaviorSubject<string> = new BehaviorSubject("a");

USAGE

console.log(subject.value); // will print the current value


Subjectを隠蔽し、その値のみを公開する。

BehaviorSubjectを隠蔽し、その値のみを公開したい場合、例えばServiceからであれば、以下のようなゲッターを使用することが可能です。

export class YourService {
  private subject = new BehaviorSubject('random');

  public get subjectValue() {
    return this.subject.value;
  }
}