繁体   English   中英

如何取消Angular 2中的路线变更?

[英]How to cancel route change in Angular 2?

当用户在浏览器中单击后退或前进按钮时,我想取消路由更改。 到目前为止,我设法捕获路由更改事件,如下面的代码:

constructor(router:Router) {
  router.events
    .subscribe((event:Event) => {
      // some logic.
      // event.preventDefault(); ?
    });
}

我在事件中找不到任何方法/成员来停止事件默认。 然后我将在控制台上收到此错误,因为我没有按预期注册路由配置,这是因为我使用location.go()来修改网址。

错误:未捕获(在承诺中):错误:无法匹配任何路由:'Some / Url'

有没有办法取消路由更改,以便Angular不查看路由配置?

您可以在定义路径时使用canDeactivate guard,这将帮助您在更改路径时编写逻辑。

您可以简单地返回true或false,根据您是否要继续或拒绝路由导航,您还可以引用对该路由有效的组件实例,以便读取其上的任何属性。

该方法的签名如下,

canDeactivate(component: T,
    route: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot) :  
     Observable<boolean>|Promise<boolean>|boolean

您可以在这里阅读更多相关信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM