我有根AppModule
,其中我描述了依赖关系,我有@Injectable
JwtLocalStorage
。我想知道如何在JwtLocalStorage.prototype.getToken()
中将tokenGetter
作为provideAuth()
传递给我。可能吗?我应该为此做些什么?
app.module.ts
@NgModule({
// ...
providers: [
// ...
provideAuth({
tokenGetter: () => JSON.parse(localStorage.getItem(TASK_DI_CONFIG.jwtName)),
}),
{ provide: APP_CONFIG, useValue: TASK_DI_CONFIG },
{ provide: JwtStorage, useClass: JwtLocalStorage }
],
bootstrap: [
AppComponent
]
})
export class AppModule {
}
JWT本地-storage.ts
@Injectable()
export class JwtLocalStorage implements JwtStorage {
constructor(
@Inject(APP_CONFIG) private config: AppConfig
) {
}
getToken() {
return JSON.parse(localStorage.getItem(this.config.jwtName));
}
// ...
}
P.S。我正在使用Angular 2.0.0-rc.5
答案 0 :(得分:0)
我使用service factory解决了这个问题。 解决方案看起来像这样
@NgModule({
// ...
providers: [
// ...
{
provide: AuthHttp,
useFactory: (http: Http, jwtStorage: JwtStorage) => {
return new AuthHttp(new AuthConfig({
tokenGetter() {
return jwtStorage.getToken();
}
}), http);
},
deps: [Http, JwtStorage]
}
]
})
export class MyAwesomeModule {
}