在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和其他东西,所以它不允许我访问。但无论如何,我认为将对象添加到服务中而不是相反的方式是一种更好的方法,至少在我的情况下是这样。