控制浏览器返回Angular 2



在Angular 2中,是否有更好的方法来控制浏览器返回。例如:当点击背面时,显示确认对话框,如果确认重定向到页面X,否则停留在同一页面。

使用location.onPostate(),我们无法完全控制浏览器返回,因为它最终会执行返回重定向。

使用authguard、canActivate of angular2路由可以实现上述行为吗?

您要查找的是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

最新更新