拦截来自angular2的所有HTTP请求
我正在寻找一种方法来拦截angular发出的所有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}, 认可供应商,
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是一个细节,主要问题是类声明的顺序。非常正确,谢谢。尽管是愚蠢的错误很难识别,但看到你的回答没有任何意义。