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

标签 angular typescript service injectable

我有以下模块声明:

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 { }

和服务:

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

@Injectable()
export class ConnectionService {
    id;

    getToken() {
        return JSON.parse(sessionStorage.getItem('token'))[this.id];
    }
}

我需要在模块导出函数的 tokenGetter 中使用服务方法“getToken”,但我无法让它工作,Google 也没有回答我的问题(或者我无法正确查看) .

最佳答案

你好,你可以这样试试吗

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

关于angular - 从 Angular 2+ 的模块声明中的导出函数访问服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054598/

相关文章:

javascript - 使用 typescript@2.0.3 从 "typings"迁移到 "@types"

android - 我无法在我的 Android 应用程序上停止我的服务(更新我的位置)!

c# - 如何编写我也可以作为 winforms 程序运行的 c# 服务?

java - 运行多个服务

Angular 6 - 错误类型错误 : Cannot read property 'value' of undefined

javascript - 在 IONIC2 中获取动态创建的 ionic 输入值

heroku - 在 Heroku 上托管 Angular2

angular - 从嵌套在 Firestore 文档中的集合中获取数据的最佳方法是什么?

javascript - 检查字符串是否包含子字符串(不区分大小写)

json - 如何将从服务接收到的数据传递到 Angular 数据表