Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拦截来自angular2的所有HTTP请求_Angular_Typescript_Angular2 Http - Fatal编程技术网

拦截来自angular2的所有HTTP请求

拦截来自angular2的所有HTTP请求,angular,typescript,angular2-http,Angular,Typescript,Angular2 Http,我正在寻找一种方法来拦截angular发出的所有HTTP请求,并添加一些头。在angular2 RC5之前的版本中(在NgModule之前)是这样的,例如: 类MyOptions扩展了BaseRequestOptions{ 授权:string='Bearer'+localStorage.getItem('tokenName'); } 引导程序(AppComponent, [HTTP_提供程序, {provide:RequestOptions,useClass:MyOptions}, 认可供应商,

我正在寻找一种方法来拦截angular发出的所有HTTP请求,并添加一些头。在
angular2 RC5
之前的版本中(在
NgModule
之前)是这样的,例如:

类MyOptions扩展了BaseRequestOptions{
授权:string='Bearer'+localStorage.getItem('tokenName');
}
引导程序(AppComponent,
[HTTP_提供程序,
{provide:RequestOptions,useClass:MyOptions},
认可供应商,
disableDeprecatedForms(),
provideForms(),
]).catch(err=>console.error(err));
我目前的版本是
2.0 final
,与此类似:

@NgModule({
导入:[BrowserModule],
声明:[AppComponent],
供应商:[
{provide:RequestOptions,useClass:MyOptions}
],
引导:[AppComponent]
})
导出类AppModule{
}
@可注射()
导出类MyOptions扩展了RequestOptions{
构造函数(){super({method:RequestMethod.Get,headers:newheaders()});}
}
它显示以下错误:
TypeError:无法读取null的属性“merge”
。可以看出

注意:
MyOptions
的实现与复制的相同,因为如果您在
{Provide:RequestOptions,useClass:BaseRequestOptions}
中使用
BaseRequestOptions
,则一切正常


你可以看看下面的问题,他们对此进行了深入的讨论


我发现您的代码中有两个错误

  • 您没有导入
    RequestMethod

  • 您必须在
    NgModule
    装饰师


通过这种方式,您的演示将看起来像

好的,我已经看到了其中的一些主题,这些问题和答案涵盖了如何实现这一点的先前方法(先前的RC 5),如中所示。但在我的例子中,问题具体是angular(
angular 2.0 final
)的当前版本。RequestMethod是一个细节,主要问题是类声明的顺序。非常正确,谢谢。尽管是愚蠢的错误很难识别,但看到你的回答没有任何意义。