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();
}

这工作正常,但是我有带有作业列表的 sidenav 菜单,单击每个作业,作业详细信息页面更新单击作业详细信息。在这里,单击每个作业时,都会发生多次初始订阅,并且调度 API 会多次调用,因为我无法取消订阅以前的作业订阅。

如何在参数更改时取消订阅该特定组件中的所有订阅,或者以其他任何方式解决此问题。任何帮助将不胜感激,谢谢!!!

4

1 回答 1

0
 getSearchResultsObservable(control: FormControl): Observable<any> {
    return control.valueChanges.pipe(
      debounceTime(100),
      distinctUntilChanged(),
      switchMap(data => this.getSearchResults(control.value))
    );
  }
于 2020-02-19T10:33:38.240 回答