2017-01-25 1 views
0

私のルートにデータがあり、ガードに入れたいです。 ActivatedRouteSnapshotを使ったチュートリアルを試してみましたが、次のようなエラーが発生しました。現在のルートまたは(直近のルートの)データを取得するにはどうすればよいですか?

エラー:ActivatedRouteSnapshotのプロバイダがありません!ここで

は私routes.tsです:

import { LayoutComponent } from '../layout/layout.component'; 
import {LoginComponent} from './login/login.component'; 
import { AuthGuard } from '../core/auth/auth-guard.service'; 
export const routes = [ 

    { 
     path: '', 
     component: LayoutComponent, 
     children: [ 
      { path: '', redirectTo: 'home', pathMatch: 'full', canActivate:[AuthGuard], data:{permission:'users.create'} }, 
      { path: 'home', loadChildren: './home/home.module#HomeModule',canActivate:[AuthGuard],data:{permission:'users.create'} } 
     ] 
    }, 
    { 
     path: 'login', 
     component: LoginComponent, 
    }, 
    // Not found 
    { path: '**', redirectTo: 'home' } 

]; 

そして、私のauth-guard.ts:

import { Injectable } from '@angular/core'; 
import { CanActivate, Router,ActivatedRoute } from '@angular/router'; 
import { AuthService } from './auth.service'; 

@Injectable() 
export class AuthGuard implements CanActivate { 
    constructor(private authService: AuthService, private router: Router, private route:ActivatedRoute) {} 
    canActivate(){ 
     if(!this.authService.loggedIn()){ 
      this.router.navigate(['login']); 
      return false; 
     }else{ 
      if(this.route.data['permission']){ 
       if(!this.authService.hasAccess(this.route.data['permission'])){ 
        return false; 
       } 
      } 
     } 
     return true; 
    } 
} 

答えて

関連する問題