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

时间:2016-08-03 22:04:40

标签: angular typescript

我有一个函数可以获取对象列表并将其发送到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() }
    );
  }

1 个答案:

答案 0 :(得分:7)

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

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