从 Angular 2+ 模块声明中的导出函数访问服务

juf*_*qui 5 service injectable typescript angular

我有以下模块声明:

import { ConnectionService } from './services/connection.service';
import { NgModule } from '@angular/core';
import { Http, RequestOptions } from '@angular/http';
import { AuthHttp, AuthConfig } from 'angular2-jwt';

export function authHttpServiceFactory(http: Http, options: RequestOptions) {
  return new AuthHttp(new AuthConfig({
    tokenName: 'token',
    tokenGetter: (() => sessionStorage.getItem('token'))
  }), http, options);
}

@NgModule({
  providers: [
    {
      provide: AuthHttp,
      useFactory: authHttpServiceFactory,
      deps: [Http, RequestOptions]
    }
  ],
})

export class AuthModule { }
Run Code Online (Sandbox Code Playgroud)

和服务:

import { Injectable } from '@angular/core';

@Injectable()
export class ConnectionService {
    id;

    getToken() {
        return JSON.parse(sessionStorage.getItem('token'))[this.id];
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要在 Modules 导出函数的 tokenGetter 中使用 Services 方法“getToken”,但我无法使其工作并且 Google 没有回答我的问题(或者我无法正常查看)。

Rob*_*ert 1

你好,你可以尝试这样吗

export function authHttpServiceFactory(http: Http, options: RequestOptions) {
  return new AuthHttp(new AuthConfig({
       tokenName: 'token',
       tokenGetter: (() => new ConnectionService().getToken())
       }), http, options);
 }
Run Code Online (Sandbox Code Playgroud)