取消订阅Angular NGXS

时间:2019-05-16 14:19:19

标签: angular rxjs angular6 ngxs

我是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(); 

2 个答案:

答案 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时退订