我有一个扩展baserequestoptions
的服务,包括两个标头,这些标头对所有http请求都是通用的。问题是在实例化服务时在构造函数中设置这些头。因此,一旦设置它们,除非发生页面重新加载,否则它们不会改变(假设:所有代码,组件,服务等都在浏览器刷新时重新创建)
为了解决这个问题,我添加了一个public method setHeader()
我可以从其他组件/服务中调用如果我可以获得DefaultRequestOptions
的实例,那么我可以调用getHeader()
方法。
现在,我不知道如何获取DefaultRequestOptions
的实例。
此外,是否有可能使用rxjs observables自动更新DefaultRequestOptions类中的标头。
import { Injectable } from '@angular/core';
import { BaseRequestOptions, RequestOptions } from '@angular/http';
@Injectable()
export class DefaultRequestOptions extends BaseRequestOptions {
constructor() {
super();
// Set the default 'Content-Type' header
this.headers.set('Content-Type', 'application/json');
// Set the default 'Authorization' header
this.headers.set('Authorization', 'oh god');
}
public setHeader(header: string, value: string){
this.headers.set(header, value);
}
}
export const requestOptionsProvider = { provide: RequestOptions, useClass: DefaultRequestOptions };