У меня есть функция, которая получает список объектов и POST-файлы на api.Cant get Observable of string value (angular2/typescript)
Функция возвращает Observable, так как тот, кто когда-либо называет ее, ожидает получить от нее строку, основанную на ответе api.
Если ответ хороший, я хочу вернуть определенную строку, и если это ошибка, я хочу отправить другую строку.
Это моя функция, которая возвращает строку:
public sendUpdate(updatedList: Cars[]): Observable<string> {
return this._myService.updateListNewOrder(updatedList)
.map(response => "The POST worked successfully")
.catch(error => Observable.of("An Error occurred"));
}
Так что теперь я хочу, чтобы вызвать эту функцию и получить строку в моем component.ts:
messageToDisplay: string;
public updateList() {
this._myService.sendUpdate(this.listToUpdate).subscribe(
res => this.messageToDisplay = res, // onNext
error => this.messageToDisplay = error // onError
);
}
, но это не работает ... Я не получаю ошибок. Просто MessageToDisplay остается неопределенным.
Кто-нибудь видит проблему?
Спасибо!
Если вам это нужно, это updateListNewOrder (...):
public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> {
let apiURL = "my/api/url";
return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() }
);
}
Попробуйте изменить наблюдаемый. На Observable.throw. Из документов rxjs: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/throw.md – ajliptak