![](/img/trans.png)
[英]Angular - How do I cancel a Route Change triggered from the Back button?
[英]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.