Cant get Наблюдается строковое значение (angular2/typescript)
У меня есть функция, которая получает список объектов, а POST - на api.
Функция возвращает 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"));
}
Итак, теперь я хочу вызвать эту функцию и получить строку в my component.ts:
messageToDisplay: string;
public updateList() {
this._myService.sendUpdate(this.listToUpdate).subscribe(
res => this.messageToDisplay = res, // onNext
error => this.messageToDisplay = error // onError
);
}
но это не работает... Я не получаю ошибок. Это просто, что messageToDisplay остается undefined.
Кто-нибудь видит проблему?
Спасибо!
Если вам это нужно, это updateListNewOrder (...):
public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> {
let apiURL = "my/api/url";
return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() }
);
}
Ответы
Ответ 1
Я воспроизвел вашу логику здесь своими собственными функциями, и все сработало нормально. Ваш метод sendUpdate
кажется правильным, а также функция subscribe
. Итак, логика RxJS в порядке для меня. Проблема может быть в другом мире кода, который не отображается.
Единственная проблема, о которой я узнал, это тип updateListNewOrder
. Он должен быть Observable<Response>
вместо Observable<ServerResponse>
, если вы используете модуль @angular/http
.