2017-04-09 47 views
0

我订阅我的顶部导航栏中,组件的路由器事件:导航到router.events函数中另一条路线导致浏览器挂断

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

您正在重定向循环伴侣。 您呼叫的事件块内的路由器导航方法,而无需在条件的特定网址。每当网址更新,以便每次重定向后,它会一次又一次地执行

目前你的代码将被执行。

为了解决这个尝试添加的路线以及与条件,因此不会对每一个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']); 
    } 
    }); 

换成你自己的网址逻辑执行,但你必须限制你的代码在特定的页面上执行,而不是在上面的例子中执行,它不会在404路由上执行。

+0

感谢您的提示是正确的。我不会修复这个错误。其他一些问题,问题只是由于这是我给自己定下的要求,但我选用彻底改变我的初始化界面,从而不再需要的这种worksaround :-) – Pascal