Как использовать CanDeactivate guard при выходе из приложения (НЕ компонент) - PullRequest
0 голосов
/ 08 мая 2019

В моем приложении пользователь может быть проверен, см. Результаты теста.И это все без регистрации (например, логин-пароль).Но если он хочет оставить заявку, я хочу предложить ему зарегистрироваться, иначе его данные не будут сохранены.Я не хочу предлагать зарегистрироваться при выходе из определенного компонента, только если он хочет оставить заявку.Я новичок в угловой.Возможно, для этой проблемы есть другое решение в угловых, не связанных с CanDeactivate guard.

ОБНОВЛЕНИЕ:

благодаря Сергею Меллу, для угловых сделал следующее:

export abstract class DeactivationGuarded {
 abstract canDeactivate(): Observable<boolean> | Promise<boolean> | boolean;
 @HostListener('window:beforeunload', ['$event'])
 unloadNotification($event: any) {
  if (!this.canDeactivate()) {
   $event.returnValue = true;
  }
 }
}

А затем расширяет корневой компонент из DeactivationGuarded.

Но он не работает для 'onpagehide'.

1 Ответ

1 голос
/ 08 мая 2019

Похоже, ваше решение должно выглядеть примерно так

function myConfirmation() {
    if (user.isRegistered) {
       return;
    }
    // Open your fancy registration dialog here;
    return 'Please, register. Otherwise your data will not be saved';
}

window.onbeforeunload = myConfirmation;
...