在我的应用程序中,可以对用户进行测试,查看测试结果。而这一切都无需注册(例如登录密码)。但是,如果他想离开该应用程序,我想提供给他注册,否则他的数据将不会保存。 我不想在离开某个组件时提供注册,仅当他想离开应用程序时。 我是新手。也许对于这个问题,还有一个角度解决方案,与CanDeactivate保护无关。
更新:
感谢谢尔盖·梅尔(Sergey Mell),他的角度如下:
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'。
答案 0 :(得分:1)
您的解决方案看起来应该像这样
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;