Отписаться в Angular NGXS - PullRequest
1 голос
/ 16 мая 2019

Я новичок в NGXS в Angular, и я прочитал, что вам не нужно отписываться, когда вы используете асинхронный канал.Однако я также подписываюсь на queryParams и подписываюсь от действия рассылки.Нужно ли отписываться от этих 2 кодов ниже?

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 ]

1 голос
/ 16 мая 2019

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

0 голосов
/ 17 мая 2019

Ответ не нужно отписываться от этих двух кодов.Поскольку маршруты обрабатываются Angular и second, хранилище обрабатывается ngxs.Не нужно отписываться.Отписаться только при использовании rxjs

...