Кнопка «Назад» в браузере не вызывает CanDeactivateGuard, если метод router.navigate был вызван ранее - PullRequest
0 голосов
/ 11 января 2019

У меня проблема с маршрутизацией и CanDeactivateGuard в моем приложении.

У меня есть кнопка «Назад», которая должна перенаправить пользователя на указанную страницу. У меня есть CanDeactivateGuard, который должен показывать всплывающее окно подтверждения, что пользователь действительно хочет покинуть страницу.
Шаги:
1) Пользователь нажимает кнопку «Назад» на странице
2) CanDeactivateGuard работает и показывает всплывающее окно подтверждения
3) Пользователь нажимает «Нет» во всплывающем окне подтверждения.
4) Пользователь нажимает кнопку «Назад» в браузере
5) Ничего не происходит (но я ожидаю увидеть всплывающее окно подтверждения снова). Есть какая-то «магия»: если пользователи нажимают «Назад» в браузере 3-5 раз - всплывающее окно будет показано снова.

Метод кнопки «Назад»:

   onBackClick() {
        this.router.navigate(['/some route']);
    } 

CanDeactivateGuard:

  canDeactivate(..some params): boolean | Observable<boolean> | Promise<boolean> {
        return confirm('Test message');
    }
...