2016-08-13 71 views
0

我有一个CustomRequestOptions类来包装基本API URL中的所有http请求。 类看起来是这样的:Angular 2 CustomReqeuestOptions merge()因为Angular 2 RC.5不起作用

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

你如何使用'CustomRequestOptions'? – dfsq

+0

在我的应用程序中,module.ts提供程序:[提供:RequestOptions,useValue:CustomRequestOptions},' – TheUnreal

回答

1

你应该提供useClass而不是useValue您的自定义请求选项如下:

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

有一个很好的blog post约帕斯卡尔Precth依赖注入。