2016-11-05 4 views
0

私はcanActivateを使用していますが、falseを返すときにはまだ経路に行きます。ここでang2では私はcanActivateを使用していますが、falseを返すとそれはまだ経路に行きます

以下の私のコード:

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

     return this.init(); 
    } 

このコードは、例えばルートデータに応じて、trueまたはfalseを返します

これはまだルートに行くつもりですか?なぜならコンソールエラーのない青い画面しか表示されないからですが、私はそれをホームページにリダイレクトしたい、または前のページに少なくとも残したいと思っています。

この機能はどのように機能しているのか、どのような提案がありますか?

答えて

0

booleanまたはpromiseまたはobservarがinit()メソッドから返されていることを確認してください。 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

私はそれを試してみましたかtrueまたはfalseハードコーディングされているので、まだブルースクリーンが表示されています。変更されたルート – AngularM

+0

falseを返すと、次のurlルートにナビゲートします。 – AngularM

+0

あなたのcan activateメソッド本当に呼ばれていますか?取得したいルートのルート配列に設定する必要があります。 – Nilz11

関連する問題