Я создал общий сервис, как это.
common.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class CommonService {
constructor(private http: HttpClient) { }
post(url: string, params: any): Observable<any> {
return new Observable(observer => {
const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) };
this.http.post(url, params, httpOptions)
.subscribe(response => {
observer.next(response);
observer.complete();
}, (err) => {
observer.error(err);
});
});
}
}
my-service.ts
book(data: Spa): Observable<any> {
return this.commonService.post(`${environment.apiURL}/my/v3/my.json`, data);
}
page.ts
book() {
this.myService.book(spa).subscribe((res: any) => {
}, error => { console.log(error); });
}
}
В: Нужно ли создавать собственный метод Observable
на post()
?Так как this.http.post(url, params, httpOptions)
возвращает Observable
надеюсь, мне не нужно создавать пользовательские Observable
снова нет (то есть common.ts
)?
Примечание: Выше работает нормально и без ошибок, хотя.