自Angular 2 RC.5以来,Angular 2 CustomReqeuestOptions merge()无效

时间:2016-08-13 09:01:58

标签: angular

我有一个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},

1 个答案:

答案 0 :(得分:1)

您应该使用useClass而不是useValue提供自定义请求选项,如下所示:

providers: [
   { provide:RequestOptions, useClass:CustomRequestOptions }
]

Pascal Precth的依赖注入有一个很好的blog post