【发布时间】:2017-02-09 10:16:26
【问题描述】:
我正在寻找一种方法来拦截 angular 发出的所有 HTTP 请求并添加一些 headers。在angular2 RC5(NgModule 之前)之前的版本中是这样的,例如:
class MyOptions extends BaseRequestOptions {
Authorization: string = 'Bearer ' + localStorage.getItem('tokenName');
}
bootstrap(AppComponent,
[HTTP_PROVIDERS,
{ provide: RequestOptions, useClass: MyOptions },
appRouterProviders,
disableDeprecatedForms(),
provideForms(),
]).catch(err => console.error(err));
我目前使用的是2.0 final 版本,research on how this would be implemented in this version 与此类似:
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
providers: [
{ provide: RequestOptions, useClass: MyOptions }
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
@Injectable()
export class MyOptions extends RequestOptions {
constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }
}
它显示以下错误:TypeError: Can not read property 'merge' of null。可以看到this example。
注意:
MyOptions的实现与BaseRequestOptions相同,复制,因为如果你在{Provide: RequestOptions, useClass: BaseRequestOptions}中使用BaseRequestOptions,一切正常,可以看到this example。
【问题讨论】:
标签: angular typescript angular2-http