在Angular 2中,我试图让@canActivate为我的路线工作,但似乎没有工作

时间:2016-08-04 19:57:09

标签: angularjs angular

在Angular 2中,我试图让@canActivate为我的路线工作,但似乎没有用。

这是我的路由器的版本(不确定它是否适用于此版本): " @ angular / router":" 2.0.0-rc.1",

这是我的一些app.ts文件:

import {AuthGuard} from './interceptor';

@Component({
  moduleId: module.id,
  selector: 'app',
  providers: [RouterOutlet, RouterOutletMap, ROUTER_PROVIDERS, HTTP_PROVIDERS, HTTP_BINDINGS],
  template: `

    <div class="content">
      <router-outlet></router-outlet> 
    </div>   
  `,
  directives: [ROUTER_DIRECTIVES]
})
@Routes([
  { path: '/', component: Home, canActivate: [AuthGuard]},
  { path: '/home', component: Home, canActivate: [AuthGuard]}
])
export class AppComponent { 
  constructor(){

  }
}

这是我的authGuard服务:

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

@Directive({
  selector: 'authguard'
})

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate() {
    console.log('AuthGuard#canActivate called');
    return true;
  }
}

1 个答案:

答案 0 :(得分:1)

Angular版本为2.0.0-rc.4。路由器的版本为V3-beta.2。请确保您拥有最新版本。

@Routes仅适用于较旧的路由器版本 canActivate: [AuthGuard]仅适用于最新版本

@Routes([
  { path: '/', component: Home, canActivate: [AuthGuard]},
  { path: '/home', component: Home, canActivate: [AuthGuard]}
])

有关如何使用新路由器的详细信息,请参阅https://angular.io/docs/ts/latest/guide/router.html