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;
}
}
ゴーリージーズ!私はそれをコンストラクトに渡していました。 –