Как отказаться от подписки на все подписки при изменении параметров в angular

Я разрабатываю страницу, которая может отображать детали задания, для этой цели я использую хранилище 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 вызывают несколько раз, потому что я не могу отменить подписку на предыдущие задания.

Как я могу отказаться от подписки на все подписки в этом конкретном компоненте при изменении параметров или любым другим способом решить эту проблему. Любая помощь будет оценена, спасибо!!!

1 ответ

 getSearchResultsObservable(control: FormControl): Observable<any> {
    return control.valueChanges.pipe(
      debounceTime(100),
      distinctUntilChanged(),
      switchMap(data => this.getSearchResults(control.value))
    );
  }
Другие вопросы по тегам