У меня есть такая услуга:
Примечание: Здесь мне нужно работать с cookies
book(data: Spa): Observable<any> {
return this.http.post(`${environment.apiURL}:${environment.port}/${environment.domain}/abc/my.json`, data,
{
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
}
Вы можете видеть, что каждыйметод, где я должен отправить headers
.Что очень некрасиво и не DRY
.Поэтому я хотел бы написать общий CRUD
, чтобы добавить его автоматически.Как я могу это сделать?
Я пробовал это:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { RequestOptions } from '@angular/http';
@Injectable({
providedIn: 'root'
})
export class CommonService {
constructor(private http: HttpClient) { }
post(url, params): Observable<any> {
return new Observable(observer => {
const headers = new Headers();
let options = new RequestOptions({ headers: this.createHeader(headers) });
this.http.post(url, params, options)
.subscribe(response => {
observer.next(response);
observer.complete();
}, (e) => {
observer.error(e);
});
})
}
createHeader(headers: Headers): Headers {
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return headers;
}
}
Но это выдает эту compile time
ошибку в этой строке let options = new RequestOptions({ headers: this.createHeader(headers) });
ТипВ «Заголовках» отсутствуют следующие свойства типа «Заголовки»: ключи, значения, toJSON, getAll и еще 2.ts (2740) interfaces.d.ts (61, 5): ожидаемый тип происходит из свойства «заголовки»который объявлен здесь для типа 'RequestOptionsArgs' (свойство) RequestOptionsArgs.headers ?: Заголовки
И он также говорит, что warning
тоже:
RequestOptions устарел: см.https://angular.io/guide/http (амортизация)