我有使用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刚刚停止充当提供者。
使用自己的时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] 删除。
我来说两句