我订阅了我的顶级导航栏组件中的路由器事件:
this.router.events.subscribe(event => {
if (event instanceof RoutesRecognized && this.authService.isLoggedIn()) {
// some other custom if-logic then do this:
this.router.navigate(['404']);
}
});
当我执行上面的代码时,我的浏览器冻结了,我必须在任务管理器中杀死chrome.exe ...
为什么在旧路线仍在导航时我无法导航到另一条新路线?
我该怎么做?
答案 0 :(得分:0)
您正处于重定向循环配对之下。 您正在调用事件块内的路由器导航方法,而您的条件中没有特定的URL。
目前,只要网址更新,您的代码就会执行,因此每次重定向后都会反复执行。
要解决这个问题,请尝试添加路由以及条件,这样就不会为每个网址执行
this.router.events.subscribe(event => {
let url = this.router.url;
if (event instanceof RoutesRecognized && this.authService.isLoggedIn() && url !== "/404") {
// some other custom if-logic then do this:
this.router.navigate(['404']);
}
});
将url逻辑替换为您自己的逻辑,但是您必须限制您的代码在特定页面上执行,而不是在上面的示例中它不会在404路径上执行。