[英]Injecting services in CanActivate in Angular2
我正在尝试为我的路线创建一个auth Guard服务。 在此服务中,我需要注入要用于返回当前登录用户的UserAccountService。
这是我的警卫:
import { Injectable, Inject } from '@angular/core';
import { CanActivate } from '@angular/router';
import { UserAccountService } from '../';
@Injectable() export class ClaimsGuardService implements CanActivate
{
constructor(private user: UserAccountService) { }
canActivate(route, state) {
return true;
}
}
UserAccountService
可以很好地注入组件中,它包含在我的app.module
:
providers: [
provideInterceptorService([
new ServerURLInterceptor(new CookieService())
]),
ClaimsGuardService,
CookieService,
UserAccountService,
],
可以很好地注入其他服务,例如CookieService
, Http
等,但是UserAccountService
存在此问题。
以下是服务的定义:
@Injectable()
export class UserAccountService {
private currentUser: any = {};
constructor(private cookieService: CookieService, private http: InterceptorService) {
}
}
感谢您的回覆Gunter。 实际上问题出在这一行:
import { UserAccountService } from '../';
我必须从其实际位置而不是从/index
文件引用UserAccountService。
只需为canActivate
定义服务(如CanActivateTeam
)。 如果CanActivateTeam
具有构造函数参数,则将从DI传递它们。
https://angular.io/docs/ts/latest/api/router/index/CanActivate-interface.html
@NgModule({ imports: [ RouterModule.forRoot([ { path: 'team/:id', component: TeamCmp, canActivate: [CanActivateTeam] } ]) ], providers: [CanActivateTeam, UserToken, Permissions] }) class AppModule {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.