2016-08-03 17 views
14

Mam funkcję, która pobiera listę obiektów i wysyła je do api.Nie można uzyskać wartości ciągów znaków (kątowa2/maszynopis)

Funkcja zwraca Observable, ponieważ kto kiedykolwiek zadzwoni, spodziewa się uzyskać z niej ciąg znaków na podstawie odpowiedzi interfejsu API.

Jeśli odpowiedź jest dobra, chcę zwrócić określony ciąg znaków i jeśli jest to błąd, chcę wysłać inny ciąg znaków.

To jest moja funkcja, która zwraca ciąg znaków:

public sendUpdate(updatedList: Cars[]): Observable<string> { 
return this._myService.updateListNewOrder(updatedList) 
    .map(response => "The POST worked successfully") 
    .catch(error => Observable.of("An Error occurred")); 
} 

Więc teraz chcę wywołać tę funkcję i uzyskać ciąg w moich component.ts:

messageToDisplay: string; 

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

ale to nie działa ... Nie dostaję błędów. Po prostu komunikat messageToDisplay pozostaje nieokreślony.

Czy ktoś widzi problem?

Dzięki!

Jeśli jest to potrzebne, to updateListNewOrder (...):

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

Spróbuj zmienić swój Observable.of na Observable.throw. Z dokumentacji rxjs: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/throw.md – ajliptak

Odpowiedz

7

I zamieszczonym logiki tutaj własne funkcje i wszystko działało w porządku. Twoja metoda wydaje się być poprawna, jak również funkcja subscribe. Tak więc logika RxJS jest dla mnie w porządku. Problem może być w innym spokoju kodu, który nie jest narażony.

Jedyny problem, który odkryłem, to typ updateListNewOrder. Powinien to być Observable<Response> zamiast Observable<ServerResponse>, jeśli używasz modułu @angular/http.

Powiązane problemy