Как отказаться от подписки на все подписки при изменении параметров в 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))
);
}