2016-11-18 2 views
7

Helloo,Angular2 beschränken alle Routen

ich eine Wache erstellt haben:

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; 
    } 
} 

und haben mehrere Module mit mehreren Routen in ihnen. Wie schränke ich einfach jede Route in meiner App mit dieser Wache ein?

Mit freundlichen Grüßen

Antwort

11

-Setup eine leere Route mit Wache, und machen den Rest Ihrer Routen children dieser einen:

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

können Sie componentless Routen verwenden

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

MyGuard wird auf alle untergeordneten Routen angewendet werden.

Verwandte Themen