我有一个CustomRequestOptions类来包装基本API URL中的所有http请求。 这个类看起来像这样:
import {BaseRequestOptions, RequestOptions, RequestOptionsArgs, Headers} from '@angular/http';
export class CustomRequestOptions extends BaseRequestOptions {
merge(options?:RequestOptionsArgs):RequestOptions {
options.url = 'http://127.0.0.1/api/public/' + options.url;
if (options.method === 1) {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
options.headers = headers;
}
return super.merge(options);
}
}
当我的应用程序正在运行并尝试执行以下代码时:
loadData()
{
this.http.get('data')
.map((res:Response) => res.json())
.subscribe(
data => {
console.log("TEST");
);
}
我收到此错误:
browser_adapter.ts:82 ORIGINAL EXCEPTION: TypeError: newOptions.merge is not a function
为什么合并不再有效,又有什么选择?
app.module.ts
providers: [
{provide:RequestOptions,useValue:CustomRequestOptions},
答案 0 :(得分:1)
您应该使用useClass而不是useValue提供自定义请求选项,如下所示:
providers: [
{ provide:RequestOptions, useClass:CustomRequestOptions }
]
Pascal Precth的依赖注入有一个很好的blog post。