在当前的登出电话中,我有类似以下内容:
getLogoutConfirmation(){
// get confirmation in modal and perform logout
// redirect to login page
}
问题是,执行注销并调用重定向到登录时,将在该路由上调用canDeactivate保护,但是用户已经注销。
因此,如何在执行注销之前调用canDeactivate Guard,如果用户不想离开,如何取消注销操作。
谢谢。
最佳答案
您应该基于getLogoutConfirmation()
导航到登录页面。如果您没有离开,则不会激活CanDeactivate
。
否则,当导航离开当前 View 或在 Angular 应用程序中路由时,将调用Guard canDeactivate。您可以检查canDeactivate中的getLogoutConfirmation和,然后决定继续还是取消导航。 CanDeactivate保护可用于处理未保存的更改,检查权限并清理组件。这不能处理外部导航,例如浏览器刷新或关闭。在这些情况下,您需要使用@HostListener('window:beforeunload')