2016-11-05 48 views
0

在angular2中,我使用了canActivate,但是当它返回false时,它仍然会转到路径。在angular2我使用canActivate,但是当它返回false时,它仍然会转到路线

这里我下面的代码:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
     this.isAuthRequired = route.data.isAuthRequired; 
     this.isCompanyView = route.data.isCompanyView; 

     return this.init(); 
    } 

此代码取决于数据路由例如返回true或false isAuthRequired等

这是否仍然是要去的路线?因为它确实只显示了一个没有控制台错误的蓝色屏幕,这很好,但我希望它能够重定向到主页或至少停留在前一页。

这个功能是不是工作,你有什么建议。

回答

0

确保您从init()方法返回booleanpromiseobservar。 从init()返回true将导航到选定的路由。 返回false将阻止当前屏幕的页面导航。

类似下面的: -

init(): boolean{ 
    /* your application logic */ 

    return true; 
} 

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
    this.isAuthRequired = route.data.isAuthRequired; 
    this.isCompanyView = route.data.isCompanyView; 

    return this.init(); 
} 

我希望这可以帮助你。

+0

我试过,真或假的硬编码仍然给我一个蓝色的屏幕,因为它改变了路线 – AngularM

+0

当我返回false时,它仍然导航到下一个url路线 – AngularM

+0

如果你可以激活方法,你尝试做一个调试输出真的叫?它必须设置在您想要获取路线的路线数组中。 – Nilz11

相关问题