0

複数の兄弟コンポーネント間でデータを共有するために、データ ストア サービスを実装しています。各コンポーネントは、データ ストアの変更について通知を受ける必要があります。データ ストアはそれ自体では設定されません。データはコントローラーから設定する必要があります。

data.store.ts

@Injectable()
export class DocumentIssueStore {

  private _documentIssue: BehaviorSubject<DocumentIssueModel>;

  constructor() {
    this._documentIssue = new BehaviorSubject(null);
  }

  public setValue(newVal: DocumentIssueModel) {
    this._documentIssue.next(cloneDeep(newVal));
  }

  public documentIssue(): Observable<DocumentIssueModel> {
    return this._documentIssue.asObservable();
  }

  public current(): DocumentIssueModel {
    return cloneDeep(this._documentIssue.getValue());
  }

両方のコンポーネントのngInitメソッドで、データ ストアをサブスクライブします。

// Subscribe to changes in the store
this.storeSubscription = this.documentIssueStore.documentIssue().subscribe(
  (data: DocumentIssueModel) => {
    this.documentIssue = data;
  }
);

問題:this.documentIssueコンポーネントを変更すると、次のようになります。

  • this.documentIssueサブスクライブしている他のすべてのコンポーネントのインスタンス ( ) を変更する
  • ストア内のインスタンスの変更 ( this._documentIssue.getValue())

setValue目標: - コンポーネント内に個別のオブジェクトがあり、メソッドを呼び出して変更し、ストアに送信できます。

4

1 に答える 1