Angular Guard и кнопка возврата браузера: странное взаимодействие

У меня есть домашняя страница и две подстраницы. Я охраняю пользователя, уходящего с подстраницы 1, с помощью Angular guards. Я выполнил рекомендации здесь и добавил логика для отдельной обработки нажатия на ссылку и использования кнопки возврата в браузере. Я воспроизвел базовую логику в stackblitz.

Эта конкретная последовательность не работает:

  1. на главной странице нажмите Comp1
  2. попробуйте уйти, нажав на «Домой», отменить
  3. попробуйте уйти с помощью кнопки возврата (если в редакторе 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

Источник: ledsshop.ru

Стиль жизни - Здоровье!