У меня есть домашняя страница и две подстраницы. Я охраняю пользователя, уходящего с подстраницы 1, с помощью Angular guards. Я выполнил рекомендации здесь и добавил логика для отдельной обработки нажатия на ссылку и использования кнопки возврата в браузере. Я воспроизвел базовую логику в stackblitz.
Эта конкретная последовательность не работает:
- на главной странице нажмите Comp1
- попробуйте уйти, нажав на «Домой», отменить
- попробуйте уйти с помощью кнопки возврата (если в редакторе stackblitz, а не в приложении, вам нужно явно ввести history.back () в консоли)
Вы увидите изменение адресной строки, но без диалогового окна подтверждения и фактического изменения страницы.
Он работает нормально, если я использую кнопку «Назад» напрямую, или если в пункте 2 я пытаюсь перейти к Comp2 вместо Home. Похоже, что угловая маршрутизация записывает попытку перехода на главную, даже если она была отменена, а при нажатии кнопки возврата никаких действий не происходит, потому что строка URL-адреса местоположения не изменилась. Это невидимо для пользователя, потому что история браузера выглядит нормально.
Я использую Angular 7. Есть идеи? Это ошибка?
Попробуйте реализовать функцию angular deactivate guard angular.io/api/router/CanDeactivate — person Daneel79108 schedule 26.02.2021
Мой код уже делает это — person Daneel79108 schedule 01.03.2021
После некоторых дополнительных исследований это действительно похоже на хорошо известную ошибку Angular и самую старую поток все еще открыт и горяч по прошествии более 4 лет! Думаю, мне просто нужно набраться терпения и ждать решения, может быть, в Angular 12.