在Angular 2中,是否有更好的方法来控制浏览器。 例如:当点击后面时,显示确认对话框,如果确认重定向到页面X,否则保持在同一页面。
使用location.onPopState()我们无法对浏览器进行完全控制,因为它最终将执行反向重定向。
使用authguard可以实现上述行为吗?canActivate of angular2 routing?
答案 0 :(得分:1)
你正在寻找的是canDeactivate
后卫。维克多在他的书中描述了这一点:
canDeactivate后卫与其他人不同。它的主要目的不是检查权限, 但要求确认。为了说明这一点,让我们更改申请以要求确认 当用户用未保存的更改关闭撰写对话框时。
然后他继续分享如何做SaveChanges
后卫:
canDeactivate(component: ComposeCmp, route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Promise<boolean> {
if (component.unsavedChanges) {
return this.dialogs.unsavedChangesConfirmationDialog();
} else {
return Promise.resolve(true);
}
}
我强烈建议购买这本书。 https://leanpub.com/router