Angular 6 Изменить маршрут без перенаправления не отображается на ActiveRoute - PullRequest
0 голосов
/ 18 сентября 2018

Назначение: Я создаю функцию поиска, в которой я хотел бы иметь возможность что-то искать, изменить URL-адрес, но не иметь углового перехода к маршруту со строкой запроса. Например: если я ищу мир 'hello', URL должен измениться на / search? Q = hello. Предостережение заключается в том, что у меня есть canDeactivate сторож, который при возврате false сбрасывает URL-адрес страницы входа. Поскольку в этом случае метод, который я использую для изменения URL-адреса в браузере, не меняет маршрут, он возвращается к /search.

Что у меня так далеко: Я видел несколько примеров того, как изменить URL браузера без перенаправления Angular с помощью location.go или location.replaceState.

Хотя это работает для изменения URL браузера, мне нужно изменить фактическое состояние маршрутизатора, не перенаправляя страницу. Так, например: если я сделаю что-то похожее на:

location.replaceState("search", "?parameter=testing") console.log(this.route.snapshot);

Я не получаю замененное состояние в качестве URL-адреса или любого из ключей параметров. Я получаю только страницу входа (в моем случае / поиск).

Вопрос : Как я могу изменить Angular router без запуска перехода на новую страницу? ИЛИ, как я могу заставить моего canDeactivate стража перенаправлять на правильный URL-адрес вместо состояния входа?

1 Ответ

0 голосов
/ 18 сентября 2018

Не удаляя это в случае, если это поможет кому-то еще. router.navigate правильно работал с тем, как мне это было нужно, однако моя подписка на прослушивание параметров маршрута запускала события из-за изменений навигации маршрутизатора. Я обновил параметры моего маршрута так, чтобы он срабатывал только при загрузке страницы, чтобы предотвратить бесконечный цикл и предотвратить разрыв моей страницы.

...