2016-11-18 6 views
7

Helloo、Angular2すべてのルートを制限

私はガード作成しました:

import { Injectable } from '@angular/core'; 
import { Router, CanActivate } from '@angular/router'; 

@Injectable() 
export class AuthGuard implements CanActivate { 

    constructor(private router: Router) { 
    } 

    canActivate() { 

     if (localStorage.getItem('currentUser')) { 
      // logged in so return true 
      return true; 
     } 

     // not logged in so redirect to login page 
     this.router.navigate(['/login']); 
     return false; 
    } 
} 

をし、その中の複数のルートを持つ複数のモジュールを持っています。このガードを使ってアプリ内のすべてのルートを簡単に制限するにはどうすればよいですか?あなたはcomponentlessルート

{ path: '', canActivate: [MyGuard], children: [ 
    {path: 'x1', ...}, 
    {path: 'x2', ...}, 

MyGuardを使用することができます

敬具

答えて

11

セットアップガードと空のルート、そしてあなたのルートを1つのchildrenの残りを行います

RouterModule.forRoot([ 
    { path: '', canActivate: [AuthGuard], children: [...restOfYourRoutes] }]) 
6

は、すべての子のルートに適用されます。

関連する問題