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

См. также:  Как реализовать завершение работы решения ODE на основе события в Julia? Почему я получаю ошибку BoundsError?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Daneel79108

    После некоторых дополнительных исследований это действительно похоже на хорошо известную ошибку Angular и самую старую поток все еще открыт и горяч по прошествии более 4 лет! Думаю, мне просто нужно набраться терпения и ждать решения, может быть, в Angular 12.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: