我正在开发一个页面,该页面可以显示工作的工作详细信息,为此,我正在使用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多次调用,因为我无法取消订阅先前的作业。
如何取消订阅该特定组件中所有订阅的参数更改,或者以其他任何方式可以解决此问题。任何帮助将不胜感激,谢谢!!!
getSearchResultsObservable(control: FormControl): Observable<any> {
return control.valueChanges.pipe(
debounceTime(100),
distinctUntilChanged(),
switchMap(data => this.getSearchResults(control.value))
);
}