Mam funkcję, która pobiera listę obiektów i wysyła je do api.Nie można uzyskać wartości ciągów znaków (kątowa2/maszynopis)
Funkcja zwraca Observable, ponieważ kto kiedykolwiek zadzwoni, spodziewa się uzyskać z niej ciąg znaków na podstawie odpowiedzi interfejsu API.
Jeśli odpowiedź jest dobra, chcę zwrócić określony ciąg znaków i jeśli jest to błąd, chcę wysłać inny ciąg znaków.
To jest moja funkcja, która zwraca ciąg znaków:
public sendUpdate(updatedList: Cars[]): Observable<string> {
return this._myService.updateListNewOrder(updatedList)
.map(response => "The POST worked successfully")
.catch(error => Observable.of("An Error occurred"));
}
Więc teraz chcę wywołać tę funkcję i uzyskać ciąg w moich component.ts:
messageToDisplay: string;
public updateList() {
this._myService.sendUpdate(this.listToUpdate).subscribe(
res => this.messageToDisplay = res, // onNext
error => this.messageToDisplay = error // onError
);
}
ale to nie działa ... Nie dostaję błędów. Po prostu komunikat messageToDisplay pozostaje nieokreślony.
Czy ktoś widzi problem?
Dzięki!
Jeśli jest to potrzebne, to updateListNewOrder (...):
public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> {
let apiURL = "my/api/url";
return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() }
);
}
Spróbuj zmienić swój Observable.of na Observable.throw. Z dokumentacji rxjs: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/throw.md – ajliptak