Angular 2 DI,使用自定义Http

内森·库珀(Nathan Cooper)

我有使用Http的服务:

import { Injectable }     from '@angular/core';
import { Inject } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';

@Injectable()
export class OrdersService {
    constructor(@Inject(Http) private http:Http) {}
    ...
}

和使用它的组件

import { Component } from '@angular/core';
import { FormBuilder, Validators } from '@angular/common';
import { HTTP_PROVIDERS } from '@angular/http';
import { Router} from '@angular/router';

import { OrdersService } from '../services/orders.service'

@Component({
  selector: 'login',
  templateUrl: './login.component.html',
  providers: [
      HTTP_PROVIDERS, //{ provide: Http, useClass: Http }
      AuthService, AuthStore,
      OrdersService
  ]
})
export class LoginComponent {

    constructor(private authService: AuthService, private ordersService: OrdersService){}
      ....
}

这有效。我有一些注释掉的文本{提供:Http,useClass:Http}。我想在这里提供扩展Http的我自己的类,但仍然具有相同的依赖性。我在这里采取的第一步是显式使用Http。

一旦取消注释此文本(并添加http导入),一切就会中断。我得到了错误"No provider for ConnectionBackend"看来HTTP_PROVIDERS刚刚停止充当提供者。

  • 如何显式使用Http?
  • 如何使用我自己的CustomHttp和HTTP_PROVIDERS中的提供程序?
斯蒂芬·斯沃科塔(Stefan Svrkota)

使用自己的时CustomHttp,不需要使用HTTP_PROVIDERS,您需要执行以下操作(如果使用RC5,则在app.module.ts中;如果使用RC4,则在main.ts中):

providers: [
    ConnectionBackend,
    provide(
        Http, {
            useFactory: (
                backend: XHRBackend,
                defaultOptions: RequestOptions) =>
                new CustomHttp(backend, defaultOptions),
            deps: [XHRBackend, RequestOptions]
        }),
]

我有同样的问题,这为我解决了。

编辑:

你并不需要进口HTTP_PROVIDERS,如果你正在使用RC5,因为您将导入HttpModule,但我完全不记得,如果你需要HTTP_PROVIDERS在RC4。您可能会需要它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular 2自定义表单输入

Angular2在自定义管道中使用基本管道

angular 2自定义指令OnInit

将自定义组件与Angular2结合使用时,JQueryUI Sortable不起作用

Http在Angular 2自定义异步验证中不起作用

在Angular 2(RC5)中使用多个自定义模块

Angular2提供自定义Http不起作用

使用Angular 2 Router的URL的自定义编码(使用+号代替空格)

Angular 2-自定义注释

Angular2 FormBuilder:在自定义验证器中使用“ this”

Angular2自定义请求

Angular 2自定义复合控件

如何降级用angular2编写的自定义管道以在angular 1.5中使用?

Angular 2自定义http服务抛出错误:XHRBackend没有提供程序

Angular 2材质自定义主题

如何通过ng2-charts angular使用chartJs的自定义渲染方法?

Angular 2-如果使用自定义验证,为什么需要使用ngForm?

扩展http类并访问自定义属性(Angular2打字稿)

自定义HTTP类Angular 2来更改基本URL并设置超时

自定义管道在Angular 2中

Angular2:在组件视图中通过ngIf使用自定义时间

在angular2的自定义Http中未定义注入的Logger

消费angular 2自定义库

扩展http类用于自定义用法ionic2 / Angular2导致错误

Angular 2 使用动态 <ng-content> 自定义自动完成的显示

如何在 angular 2 中使用自定义 http 刷新访问令牌?

在 Angular 2 中读取自定义 HTTP 响应标头

Angular2 中的自定义 Http 服务。循环依赖错误

在自定义 RadioButton 中使用 BehaviorSubject 的 Angular 2