2016-11-05 49 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

相關問題