- BehaviorSubject(ビヘイビアサブジェクト) BehaviorSubjectは、RxJSのSubjectクラスのサブクラスであり、初期値を持つオブザーバブルです。BehaviorSubjectは、購読者に現在の値の「最新値」を提供するため、新しい購読者が購読を開始した時点で最後に発行された値を受け取ることができます。また、新しい値が発行されると、その値が次に発行される最新値として保存されます。
以下は、BehaviorSubjectの使用例です。
import { BehaviorSubject } from 'rxjs';
// 初期値を指定してBehaviorSubjectを作成
const subject = new BehaviorSubject<string>('初期値');
// データの発行
subject.next('新しい値');
// 購読
subject.subscribe(value => console.log(value)); // 出力: 新しい値
- Subject(サブジェクト) Subjectは、RxJSのObservableとObserverの役割を兼ね備えたオブジェクトです。Subjectは、値を発行するだけでなく、その値を購読することもできます。ただし、Subjectは初期値を持たず、最後に発行された値を新しい購読者に提供する機能もありません。
以下は、Subjectの使用例です。
import { Subject } from 'rxjs';
// Subjectの作成
const subject = new Subject<string>();
// データの発行
subject.next('値1');
subject.next('値2');
// 購読
subject.subscribe(value => console.log(value)); // 出力: 値1, 値2
// 新しい購読者には最後に発行された値は提供されない
subject.subscribe(value => console.log(value)); // 出力: なし
BehaviorSubjectとSubjectの違いをまとめると、BehaviorSubjectは初期値を持ち、新しい購読者に最後に発行された値を提供します。一方、Subjectは初期値を持たず、最後に発行された値を新しい購読者に提供しません。
この記事では、AngularでのBehaviorSubjectとSubjectの使い方とコード例を紹介しました。これらのオブザーバブルを適切に活用することで、データの双方向バインディングやコンポーネント間のデータ共有をスムーズに行うことができます。