Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular 2+;中的模块声明中从导出函数访问服务;_Angular_Typescript_Service_Injectable - Fatal编程技术网

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

在Angular 2+;中的模块声明中从导出函数访问服务;,angular,typescript,service,injectable,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 authHtt

我有以下模块声明:

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];
    }
}

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

您好,您可以这样尝试吗

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

谢谢你,但这对我不起作用。最后,我换了一种方式,直接在服务中定义了“AuthHttp”对象。我无法尝试。在实际的项目中,我在服务中有一个构造函数来访问Http和其他东西,所以它不允许我访问。但无论如何,我认为将对象添加到服务中而不是相反的方式是一种更好的方法,至少在我的情况下是这样。