Задать вопрос
@Sashqa

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

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

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

Что можно сделать, чтоб как-то отслеживать если params не изменился.
  • Вопрос задан
  • 545 просмотров
Подписаться 1 Сложный Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Специализация Frontend-разработчик
    9 месяцев
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
  • OTUS
    JavaScript Developer. Professional
    5 месяцев
    Далее
Решения вопроса 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. при нажатии на кнопку.
Выносится в метод и вызывается в нужном месте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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