在Angular 2中使用CanActivate的NoProviderError

Iva*_*eno 2 typescript angular2-routing angular

我正在使用Angular 2和Router 3.0.0-aplha.8.

我正在尝试使用CanActivate函数来检查用户是否经过身份验证.我有一个实现CanActivate的AuthGuard,现在我只返回true.

route.ts

import { Injectable } from '@angular/core'
import { provideRouter, RouterConfig, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router} from '@angular/router';

import { AuthGuard } from './auth-guard'

import { SecurityComponent } from './security/security.component';
import { AdminDashboardComponent } from './admin/admin.dashboard.component';


export const mainRoutes: RouterConfig = [
{ path: '', component: SecurityComponent,  },
{ path: 'admin', component: AdminDashboardComponent, terminal: true, canActivate: [AuthGuard] }]

export const MAIN_ROUTER_PROVIDER = provideRouter(mainRoutes);
Run Code Online (Sandbox Code Playgroud)

AUTH-guard.ts

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

@Injectable()
export class AuthGuard implements CanActivate {
   constructor(private router: Router) {}

   canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot){
       return true;
   }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试访问"/ admin"(AdminDashboardComponent)时,我收到此错误:

在此输入图像描述

我不知道发生了什么.有人有什么想法吗?

谢谢Iván

Gün*_*uer 5

我想如果你换MAIN_ROUTER_PROVIDER

export const MAIN_ROUTER_PROVIDER = [provideRouter(mainRoutes), AuthGuard];
Run Code Online (Sandbox Code Playgroud)

它应该工作.