如何将依赖项传递给@auth0-angular-jwt?

How to pass dependencies to @auth0-angular-jwt?

所以...我正在迁移使用 HttpModuleangular2-jwt 库的 "old" 代码。

之前,我可以让 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 一起使用,我必须使用 new 版本的 angular2-jwt@auth-angular-jwt - 我知道它仍处于 beta 版本)并且我试图弄清楚我需要做什么才能访问我的服务以获取令牌(就像我以前做的那样)。

我的实际配置是(与git的示例相同):

@NgModule({
  // ...
  imports: [
    HttpClientModule,
    JwtModule.forRoot({
      config: {
        tokenGetter: () => {
          return <myService>.getToken(); // Here
        }
      }
    })
  ]
})
export class AppModule {}

可能吗?提前致谢。

这可以通过覆盖配置服务来完成:

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-beta.8 开始,forRoot 接受 options provider:

...
imports: [
    JwtModule.forRoot({
        jwtOptionsProvider: {
            provide: JWT_OPTIONS,
            deps: [Dependency],
            useFactory: jwtOptionsFactory
        }
    })
]