加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 如何在不使用构造函数DI的情况下创建Http实例? (RC.

发布时间:2020-12-17 17:17:12 所属栏目:安全 来源:网络整理
导读:参见英文答案 angular2 resolveAndCreate HTTP – missing HTTP_PROVIDERS in RC7????????????????????????????????????1个 我需要在不使用Angular2的DI(构造函数(私有http:Http))的情况下获取Http的实例 以下代码取自another stackoverflow question,它适
参见英文答案 > angular2 resolveAndCreate HTTP – missing HTTP_PROVIDERS in RC7????????????????????????????????????1个
我需要在不使用Angular2的DI(构造函数(私有http:Http))的情况下获取Http的实例

以下代码取自another stackoverflow question,它适用于Angular2 RC.4及更早版本,但不适用于RC.5(HTTP_PROVIDERS不再可用):

const injector = ReflectiveInjector.resolveAndCreate([
  HTTP_PROVIDERS
]);

this.http = injector.get(Http);

Stackoverflow上有几个问题,它们使用相同代码的不同变体,但它们都不适用于RC.5.

有人知道如何在RC.5中执行相同的操作吗?

解决方法

只需查看 HttpModule的源代码即可.您将看到创建Http所需的所有提供程序.大多数提供商都是现在删除的HTTP_PROVIDERS

export function _createDefaultCookieXSRFStrategy() {
  return new CookieXSRFStrategy();
}

export function httpFactory(xhrBackend: XHRBackend,requestOptions: RequestOptions): Http {
  return new Http(xhrBackend,requestOptions);
}

@NgModule({
  providers: [
    {provide: Http,useFactory: httpFactory,deps: [XHRBackend,RequestOptions]},BrowserXhr,{provide: RequestOptions,useClass: BaseRequestOptions},{provide: ResponSEOptions,useClass: BaseResponSEOptions},XHRBackend,{provide: XSRFStrategy,useFactory: _createDefaultCookieXSRFStrategy},],})
export class HttpModule {
}

只需将上面提供程序中的所有内容添加到您传递给ReflectiveInjector.resolveAndCreate的数组中.

如果您的目标是在引导程序之前获取Http,那么您需要处理另一件小事,即CookieXSRFStrategy.它在引导之前不起作用,因为它依赖于某些平台浏览器的东西.你可以用noop替换它,如this post所述

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读