2016-11-29 4 views
5

1つのモジュールにあるルートをグループ化できることはわかっています。同様に:Angular2 1以外のすべてのルートのガードを有効にする

canActivate: [AuthGuard], 
    children: [ 
     { 
     path: '', 
     children: [ 
      { path: 'crises', component: ManageCrisesComponent }, 
      { path: 'heroes', component: ManageHeroesComponent }, 
      { path: '', component: AdminDashboardComponent } 
     ], 
     } 

しかし、私は各モジュールのルーティングファイルにそのガードを追加する必要があります。そして私はそれらの多くを持っています。

権限がないユーザーは、ログインルート以外のいずれのルートにもアクセスできないようにしたいと考えています。

これらのすべてにガードを追加する正しい方法は何ですか?

答えて

4

ユーザーがログインしている場合は、ガード

{ path: '', canActivate: [AuthGuard], children: [ 
    { 
    path: '', 
    children: [ 
     { path: 'crises', component: ManageCrisesComponent }, 
     { path: 'heroes', component: ManageHeroesComponent }, 
     { path: '', component: AdminDashboardComponent } 
    ], 
    } 
} 

とガードチェックのあるcomponentless空のパスの親ルートを使用することができます。 にログインして、現在のルートがloginでない場合は、まだそれを許可します。

+1

他のファイルのすべての子ルートがある場合はどうなりますか?すべてのモジュールには独自のルーティングファイルがあります。 –

+0

それでも動作するはずです。私はまだそれを使っていません。うまくいかない場合は、canActivateChildにガードを追加することもできます。 –

+0

内部コンポーネントレスの空のパスのポイントは何ですか?なぜ、子供を外側のパスに直接追加しないのですか? canActivateChildrenの代わりにcanActivateを使用する理由は何ですか? – Aides

関連する問題