Угловой 8: отключение от розеток, когда параметры маршрута собираются изменить - PullRequest
0 голосов
/ 10 октября 2019

Мы столкнулись с проблемой, которую, вероятно, решить, но нам не удается найти решение.

У нас есть компонент, который не перезагружается, потому что параметры маршрута меняются, но маршрут тот же,Внутри этого компонента у нас есть несколько соединений с сокетами для получения данных. С каждым конкретным параметром маршрута у нас должны быть новые соединения. Проблема в том, что соединения перед изменением параметров маршрута не исчезают, потому что событие ngOnDestroy явно не запускается.

Наш вопрос: как мы можем отключиться от сокетов перед переходом к новым параметрам маршрута?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете подписаться на события маршрута и заново подключить свой сокет к событию NavigationEnd.


import { NavigationEnd, Router } from '@angular/router';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';


class YourComponent implements OnInit, OnDestroy {

  private destroy$ = new Subject<void>();

  constructor(private router: Router) {

  }

  ngOnInit(): void {

    this.router.events
      .pipe(
        takeUntil(this.destroy$),
        filter(e => e instanceof NavigationEnd),
      )
      .subscribe(event => {
        // Do something
        // Reconnect you socket
      });

  }

  ngOnDestroy(): void {

    this.destroy$.next();
    this.destroy$.complete();

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...