从导出函数的模块声明中角2+
问题描述:
访问服务,我有以下模块声明:从导出函数的模块声明中角2+
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];
}
}
我需要使用服务的方法“为gettoken”在Modules导出函数的tokenGetter中,但我无法使其工作,并且Google没有回答我的问题(或者我无法正常查看)。
答
你好你可以试试这样
export function authHttpServiceFactory(http: Http, options: RequestOptions) {
return new AuthHttp(new AuthConfig({
tokenName: 'token',
tokenGetter: (() => new ConnectionService().getToken())
}), http, options);
}
谢谢你,但它并没有为我工作。最后,我反过来在服务中直接定义了“AuthHttp”对象。 – jufracaqui
你有错误吗? – Robert
我无法尝试。在真正的项目中,我有一个服务中的构造函数来访问Http和其他东西,所以它没有让我。但无论如何,我认为将对象添加到服务而不是其他方式是一种更好的方法,至少在我的情况下。 – jufracaqui