从导出函数的模块声明中角2+

从导出函数的模块声明中角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); 
} 
+0

谢谢你,但它并没有为我工作。最后,我反过来在服务中直接定义了“AuthHttp”对象。 – jufracaqui

+0

你有错误吗? – Robert

+0

我无法尝试。在真正的项目中,我有一个服务中的构造函数来访问Http和其他东西,所以它没有让我。但无论如何,我认为将对象添加到服务而不是其他方式是一种更好的方法,至少在我的情况下。 – jufracaqui