У меня есть служба wrap-http, которую я использую в качестве оболочки поверх HttpClient. В сервисе wrap-http у меня есть метод
createHeaderOptions
, который получает токен пользователя из сервиса хранилища, добавляет токен в параметры заголовка и возвращает его. Я вызываю этот метод для каждого запроса. В createHeaderOptions AuthService.getLoggedUser () - это обещание, когда я добавляю await и asyn c с AuthService.getLoggedUser (), он выдает ошибку с методами get, put, post, delete и patch, где он находится вызывается в этой же службе, потому что их тип возвращаемого значения Observable. Как я могу справиться с этим?
wrap-http.service.ts
export class WrapHttpService {
private static async createHeaderOptions(headers) {
let user = {};
await AuthService.getLoggedUser()
.then((result) => {
user = result;
});
if (!_.isEmpty(user)) {
if (!headers) {
headers = {};
}
headers[`Authorization`] = 'Bearer ' + user[`tokenInfo`];
headers[`Accept`] = '*/*';
}
const httpOptions = {};
if (headers) {
httpOptions[`headers`] = new HttpHeaders(headers);
}
return httpOptions;
}
get(url: string, headers?: object): Observable<any> {
return this.http.get(url, WrapHttpService.createHeaderOptions(headers));
}
post(url: string, data: object, headers?: object): Observable<any> {
return this.http.post(url, data, WrapHttpService.createHeaderOptions(headers));
}
put(url: string, data: object, headers?: object): Observable<any> {
return this.http.put(url, data, WrapHttpService.createHeaderOptions(headers));
}
patch(url: string, data: object, headers?: object): Observable<any> {
return this.http.patch(url, data, WrapHttpService.createHeaderOptions(headers));
}
delete(url: string, headers?: object): Observable<any> {
return this.http.delete(url, WrapHttpService.createHeaderOptions(headers));
}
}
Любая помощь здесь будет высоко ценится.