Angular 9 отписаться от NavigationEnd - PullRequest
1 голос
/ 02 марта 2020

Я использую подписку на маршрутизаторе NavigationEnd следующим образом:

this.router.events
  .subscribe((event) => {
    if (event instanceof NavigationEnd) {
      this.getData();
    }
  });

Мне нужно это для обновления данных страницы при навигации по тому же маршруту, например, / product1 и / product2 используют один и тот же компонент и маршрут и обрабатывается в пользовательской службе маршрутов

Это для получения данных, когда маршрут обновляется в том же компоненте, и работает как положено

Проблема в том, что this.getData () также выполняется при переходе к другому компоненту это создает много проблем в компоненте, к которому я перехожу, и я также запускаю ненужное получение с сервера

Так что вопрос: Можно ли отписаться маршрутизатор при удалении от компонента, поэтому this.getData () не запускается?

1 Ответ

3 голосов
/ 02 марта 2020

Вы можете использовать Subscription в Observables

Прежде всего инициализируйте на своем компоненте

navigationSubs = new Subscription();


this.navigationSubs = this.router.events
  .subscribe((event) => {
    if (event instanceof NavigationEnd) {
      this.getData();
    }
  });

При уничтожении или когда захотите

this.navigationSubs.unsubscribe();
...