在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;
}
}
答案 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。