无法获得字符串值的Observable(angular2/typescript)

Joe*_*Joe 14 typescript angular

我有一个函数获取对象列表并将其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"));
}
Run Code Online (Sandbox Code Playgroud)

所以现在我想调用这个函数并在我的component.ts中获取字符串:

messageToDisplay: string;

  public updateList() {
      this._myService.sendUpdate(this.listToUpdate).subscribe(
        res => this.messageToDisplay = res, // onNext
        error => this.messageToDisplay = error // onError
    );
    }
Run Code Online (Sandbox Code Playgroud)

但这不起作用......我没有错误.只是messageToDisplay保持未定义.

有谁看到这个问题?

谢谢!

如果你需要它,这是updateListNewOrder(...):

public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> {
    let apiURL = "my/api/url";
    return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() }
    );
  }
Run Code Online (Sandbox Code Playgroud)

Ber*_*eco 7

我用自己的功能在这里复制了你的逻辑,一切正常.您的sendUpdate方法似乎是正确的以及subscribe功能.所以,RxJS逻辑对我来说没问题.问题可能在于未暴露的另一个代码和平问题.

我发现的唯一问题是它的类型updateListNewOrder.它应该是,Observable<Response>而不是Observable<ServerResponse>如果您使用该@angular/http模块.