Ich habe eine Funktion, die eine Liste von Objekten erhält und es an eine API POST.Kann nicht Observable von String-Wert (angular2/typescript)
Die Funktion gibt Observable zurück, da, wer immer sie aufruft, erwartet, dass sie basierend auf der API-Antwort einen String zurückbekommt.
Wenn die Antwort gut ist, möchte ich eine bestimmte Zeichenfolge zurückgeben, und wenn es ein Fehler ist, möchte ich eine andere Zeichenfolge senden.
Dies ist meine Funktion, die einen String zurückgibt:
public sendUpdate(updatedList: Cars[]): Observable<string> {
return this._myService.updateListNewOrder(updatedList)
.map(response => "The POST worked successfully")
.catch(error => Observable.of("An Error occurred"));
}
So, jetzt möchte ich diese Funktion aufzurufen und die Zeichenfolge in meinem component.ts zu erhalten:
messageToDisplay: string;
public updateList() {
this._myService.sendUpdate(this.listToUpdate).subscribe(
res => this.messageToDisplay = res, // onNext
error => this.messageToDisplay = error // onError
);
}
aber das funktioniert nicht ... Ich bekomme keine Fehler. Es ist nur so, dass das MessageToDisplay undefiniert bleibt.
Hat jemand das Problem?
Danke!
Wenn Sie es benötigen, ist dies updateListNewOrder (...):
public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> {
let apiURL = "my/api/url";
return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() }
);
}
Versuchen Sie, Ihre Observable.of zu Observable.throw zu ändern. Aus den rxjs-Dokumenten: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/throw.md – ajliptak