【问题标题】:angular2-jwt : useFactory directive being ignoredangular2-jwt : useFactory 指令被忽略
【发布时间】:2017-01-10 13:57:54
【问题描述】:

我正在努力集成 angular2-jwt 包。我用自定义配置选项编写了以下函数

import { Http, Headers, RequestOptions } from '@angular/http';
import { provideAuth, AuthHttp, AuthConfig } from 'angular2-jwt';
import { Injectable } from '@angular/core';

export function authHttpServiceFactory(http: Http, options: RequestOptions) {

    return new AuthHttp( new AuthConfig({
        noTokenScheme: true,
        tokenGetter: (() => JSON.parse(     localStorage.getItem('access_token') ) ),
        globalHeaders: [{'Accept': 'application/json'}],
    }), this.http, this.options); 
}

在我的模块定义中,我已经包含了这些行

providers: [
    ...,
    {
      provide: AuthHttp,
      useFactory: authHttpServiceFactory,
      deps: [Http, RequestOptions]
    }        
],

但是当我尝试在服务中使用 AuthHttp 时,它似乎忽略了我的工厂方法并返回默认实现:

从 'angular2-jwt' 导入 { AuthHttp };

@Injectable() 导出类 SsoService {

constructor (
    private authHttp: AuthHttp,
) {}

我的模块配置正确吗?我错过了一些简单的事情

【问题讨论】:

    标签: angular angular2-jwt


    【解决方案1】:

    对于其他人,我将模块更改为使用内联解决方案而不是工厂类,如下所示:

      providers: [
          ...
          AuthHttp,
          provideAuth({
              noTokenScheme: true,
              tokenGetter: (() => JSON.parse( localStorage.getItem('access_token') ) ),
              globalHeaders: [{'Accept': 'application/json'}],
          })      
      ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 2016-05-18
      • 2017-06-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多