Назначение:
Я создаю функцию поиска, в которой я хотел бы иметь возможность что-то искать, изменить 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-адрес вместо состояния входа?