我在這裏關注這個How do I set default Http Headers for all requests in Ionic 2?Ionic2默認http標題
這工作正常,並在所有http調用它通過我把標題。 但我的問題是,當我注入任何服務到這個MyRequestOptions構造函數這個服務是undefined,並且不能使用它...
任何人都知道爲什麼?我需要在這裏注入我的自定義AuthService以將JWT令牌。
我在這裏關注這個How do I set default Http Headers for all requests in Ionic 2?Ionic2默認http標題
這工作正常,並在所有http調用它通過我把標題。 但我的問題是,當我注入任何服務到這個MyRequestOptions構造函數這個服務是undefined,並且不能使用它...
任何人都知道爲什麼?我需要在這裏注入我的自定義AuthService以將JWT令牌。
這是因爲BaseReqestOptions
使用@Injectable
,這種情況下調用BaseRequestOptions
構造函數而不是您的子類構造函數。所以,你既可以:
使用工廠
providers: [{
provide: RequestOptions,
deps: [ Config ],
useFactory: (config: Config) => {
return new DefaultRequestOptions(config);
}
}]
這將允許你自己創建的服務,而角試圖注入它。或者你可以
擴展RequestOptions
代替
@Injectable()
class DefaultRequestOptions extends RequestOptions {
constructor(public config: Config) {
super({method: RequestMethod.Get, headers: new Headers()})
this.headers.append('data', this.config.data);
}
}
RequestOptions
不飾@Injectable
。如果你看看the source code for BaseRequestOptions,你會發現它所做的與我們上面做的是一樣的(使用super
調用)。
我需要在這裏注入我的自定義AuthService也把JWT令牌
你需要的,如果AuthService
被注入Http
要小心這一點。你可能會得到一個循環依賴錯誤(因爲Http
使用RequestOptions
和你RequestOptions
需要Http
)。處理這種情況的一種方法是將Injector
,而不是Http
注入服務。然後從Injector
只需get
Http
。