0

ジョブのジョブの詳細を表示できるページを開発しています。この目的のために、NGRXストアを使用してアクションをディスパッチし、それをサブスクライブして以下のようなデータを表示しています

this.store.dispatch(new LoadJobDetails(jobIdsObject));
this.subs.add(
    this.store.pipe(select(state => state.chatbotStoreData.jobDetailsObject)).subscribe(
      (data) => {
          if(data) {
            this.jobDetails = data;
            this.getJobHomeSteps();
          }
      }
    )
);

getJobHomeSteps() {
this.store.dispatch(new LoadJobStepsDetails(this.jobId));
this.subs.add(
    this.store.pipe(select(state => state.chatbotStoreData.jobHomeStepsDetailsObject)).subscribe(
      (data) => {
          if(data) {
            this.jobStepsDetails = data;
          }
      }
    )
);
}


ngondestroy では、以下のようにすべてのサブスクリプションのサブスクリプションを解除しています。

ngOnDestroy(){
this.subs.unsubscribe();
}

これは正常に機能していますが、ジョブのリストを含むサイドナビメニューがあり、各ジョブをクリックすると、クリックされたジョブの詳細でジョブの詳細ページが更新されます。ここでは、各ジョブをクリックすると、最初のサブスクリプションが何度も発生し、ディスパッチ API が複数回呼び出されます。これは、以前のジョブ サブスクリプションのサブスクリプションを解除できないためです。

パラメータの変更時にその特定のコンポーネントのすべてのサブスクリプションのサブスクライブを解除するにはどうすればよいですか、またはこの問題を解決できる他の方法があります。助けていただければ幸いです、ありがとう!!!

4

1 に答える 1