Как передать зависимости в @auth0-angular-jwt?
Итак... я переношу свой "старый" код, который использовал HttpModule
а также angular2-jwt
Lib.
Раньше я мог сделать angular2-jwt
работать со следующим конфигом:
export function authHttpServiceFactory(
http: Http, options: RequestOptions, myService: MyService) {
return new AuthHttp(new AuthConfig({
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
tokenGetter: (() => myService.get('my_token'))
}), http, options);
}
@NgModule({
providers: [
{
provide: AuthHttp,
useFactory: authHttpServiceFactory,
deps: [Http, RequestOptions, MyService]
}
]
})
export class AuthModule {}
... Но теперь, чтобы использовать его с новым HttpClientModule
Я должен использовать новую версию angular2-jwt
( @ auth-angular-jwt - я знаю, что это все еще в бета- версии), и я пытаюсь выяснить, что мне нужно сделать, чтобы получить доступ к своему сервису, чтобы получить токен (как я обычно делал).
Моя фактическая конфигурация (такая же, как в примере с git):
@NgModule({
// ...
imports: [
HttpClientModule,
JwtModule.forRoot({
config: {
tokenGetter: () => {
return <myService>.getToken(); // Here
}
}
})
]
})
export class AppModule {}
Является ли это возможным? Заранее спасибо.
1 ответ
Решение
Это может быть сделано путем переопределения службы конфигурации:
export const jwtOptionsFactory = (dependency) => ({
tokenGetter: () => dependency.getToken(),
whitelistedDomains: []
});
...
imports: [
JwtModule.forRoot({
config: { tokenGetter(): string { throw new Error('no tokenGetter') } }
})
],
providers: [{
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}]
Начиная с 1.0.0-бета.8, forRoot
принимает параметры провайдера:
...
imports: [
JwtModule.forRoot({
jwtOptionsProvider: {
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}
})
]