我是Angular中的NGXS的新手,并且我已经阅读到使用异步管道时不需要取消订阅。不过,我也订阅了queryParams,也订阅了dispatchs动作。我需要退订以下这两个代码吗?
this.route.queryParamMap
.pipe(map(params => params.get('page')))
.subscribe((page: any) => {
this.page = page;
console.log(page);
});
this.store.dispatch(new AddEmployee(form.value)).subscribe(() => {
form.reset();
this.modalReference.close();
答案 0 :(得分:1)
这非常简单。您需要描述一个Subject
并在ngOnDestroy
生命周期中对其进行调用。另外,您应该在可观察到的takeUntil
上使用Subject
管道。
destroy$ = new Subject<void>();
ngOnInit(): void {
this.service.observable$.pipe(
takeUntil(this.destroy$)
).subscribe();
}
ngOnDestroy(): void {
this.destroy$.next();
this.destroy$.complete();
}
当可观察对象多次发出值时,最好使用此方法。
例如,如果您使用this.router.events.subscribe
,则即使该组件已被破坏,它也会触发事件,除非您使用上述方法。
答案 1 :(得分:0)
答案是不需要退订这两组代码。 因为路由是由Angular和second处理的,所以存储由ngxs处理。无需退订。仅在使用rxjs时退订