@Sashqa

Подписаться на роут?

Здравствуйте, коллеги. Нужна ваша помощь. Голову уже сломал.
У меня есть метод для копирования данных с формы.
Я нахожусь на форме №1, нажимаю кнопку, копируются данные с формы и переходим на другой роут (форму №2). Это все работает.
Но если мне нужно скопировать данные и перейти на эту же форму, роут не срабатывает.

В 1 случае я подписываюсь на изменения params
this.route.params

Что можно сделать, чтоб как-то отслеживать если params не изменился.
  • Вопрос задан
  • 517 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
Нужно либо сменить роут, например добавив хэш или query param
Либо выключить переиспользование компонента, тогда на каждый клик компонент будет инициализироваться заново. Поместив вот это куда-нибудь выше, например в app.component
constructor(
    private router: Router,
  ) {
    this.router.routeReuseStrategy.shouldReuseRoute = function () {
      return false;
    };
    this.router.events.subscribe((evt) => {
      if (evt instanceof NavigationEnd) {
        this.router.navigated = false;
      }
    });
  }


Есть так же вариант ловить все клики по routerLink и вызов navigate

upd.
а вообще вы же должны понимать, что вам не роут надо отслеживать, а выполнить ваши действия
1. при инициализации компонента.
2. при нажатии на кнопку.
Выносится в метод и вызывается в нужном месте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы