在Angular 2中控制浏览器

时间:2017-02-10 15:10:17

标签: angular angular2-routing back-button

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

使用location.onPopState()我们无法对浏览器进行完全控制,因为它最终将执行反向重定向。

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

1 个答案:

答案 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