如何取消对角度参数更改的所有订阅

问题描述 投票:0回答:1

我正在开发一个页面,该页面可以显示工作的工作详细信息,为此,我正在使用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多次调用,因为我无法取消订阅先前的作业。

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

angular rxjs angular8 rxjs-subscriptions
1个回答
0
投票
 getSearchResultsObservable(control: FormControl): Observable<any> {
    return control.valueChanges.pipe(
      debounceTime(100),
      distinctUntilChanged(),
      switchMap(data => this.getSearchResults(control.value))
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.