我有一个函数可以获取对象列表并将其发送到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"));
}
所以现在我想调用这个函数并在我的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() }
);
}
答案 0 :(得分:7)
我用自己的功能在这里复制了你的逻辑,一切正常。您的sendUpdate
方法以及subscribe
函数似乎都是正确的。所以,RxJS逻辑对我来说没问题。问题可能在于未暴露的另一个代码和平问题。
我发现的唯一问题是updateListNewOrder
的类型。如果您使用Observable<Response>
模块,则应为Observable<ServerResponse>
而不是@angular/http
。