我正在从一个ES6项目(beta11)转移到一个带有rc0的新项目,我在重写我拥有的自定义http服务时遇到了一些问题。
在我的providers /文件夹中,我有customhttp.ts:
import {Injectable } from "@angular/core";
import {Http, Headers} from "@angular/http";
import {RequestOptions, XHRBackend} from '@angular/http';
@Injectable()
export class CustomHttp extends Http {
constructor(xhrBackend: XHRBackend, requestOptions: RequestOptions) {
super(xhrBackend, requestOptions);
}
//some other methods, which override the defaults from Http
}
在我的app.mmdule.ts中我导入了这个并添加为提供者
import {CustomHttp} from '../providers/customhttp';
...
@NgModule({
...
providers: [CustomHttp]
})
在我尝试使用它的页面中
import {CustomHttp } from '../../providers/customhttp';
export class CheckAccess {
constructor(private customHttp: CustomHttp)
}
.ts已编译,但浏览器输出
error_handler.js:45EXCEPTION:未捕获(在承诺中):错误:./CheckAccess类错误CheckAccess_Host - 内联模板:0:0导致:没有ConnectionBackend的提供者!
我无法找出我做错了什么。有人可以帮忙吗?
答案 0 :(得分:1)
在您的应用模块中导入XHRBackend和RequestOptions,并通过将以下设置为提供商进行检查:
providers :[
{
provide: CustomHttp,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => {
return new CustomHttp(backend, defaultOptions);
},
deps: [ XHRBackend, RequestOptions]
}
]