【问题标题】:How do I instantiate an Http instance using ReflectiveInjector?如何使用 ReflectiveInjector 实例化 Http 实例?
【发布时间】:2017-05-05 15:04:01
【问题描述】:

如何使用 ReflectiveInjector 实例化 Http 实例?

Http 有一个构造函数,它接受一个 ConnectionBackend 和一个 RequestOptions。但是 ConnectionBackend 是一个抽象类,那么注入器到底是如何知道用什么来解决它的呢?任何有关解决 RequestOptions 的提示也将不胜感激。

在 http.d.ts 中,Http 既没有使用 @Component 也没有使用 @Injectable 进行装饰,根据 Angular 文档,这对于完全可注入的类型来说是必需的。 Http 确实是可注入的,但似乎没有任何基础设施可以做到这一点。

【问题讨论】:

标签: angular


【解决方案1】:

是的,我的问题与其他人正在链接的问题相同,但该问题中选择的答案实际上并未回答该问题。我确实在其他地方找到了答案,但我将把它复制到这里并将其标记为答案,以便提出相同问题的人至少会在某处找到它被标记为答案。

import { ReflectiveInjector } from '@angular/core';
import {
  Http, BrowserXhr, RequestOptions, BaseRequestOptions, ResponseOptions, BaseResponseOptions, ConnectionBackend,
  XHRBackend, XSRFStrategy, CookieXSRFStrategy
} from '@angular/http';


export class HttpFactory {
  public static Init(): void {
    HttpFactory._injector = ReflectiveInjector.resolveAndCreate([
      Http,
      BrowserXhr,
      { provide: RequestOptions, useClass: BaseRequestOptions },
      { provide: ResponseOptions, useClass: BaseResponseOptions },
      { provide: ConnectionBackend, useClass: XHRBackend },
      { provide: XSRFStrategy, useFactory: () => new CookieXSRFStrategy() }
    ]);
  }

  public static CreateHttp(): Http {
    return HttpFactory._injector.get(Http);
  }

  private static _injector: ReflectiveInjector;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多