2017-10-30 2 views
0

Wie kann ich eine Observable<boolean> in meiner Methode anstelle der Observable<HttpClient<AuthResponse>> zurückgeben?Zurückgeben einer Observable <boolean> anstelle von Observable <HttpResponse> für HttpClient.post

Ich habe diesen Code:

login(username: string, password: string) { 
    const body = {username: username, password: password}; 
    return this.http.post<AuthResponse>(`${this.baseUrl}`, body, { observe: 'response' }) 
     .subscribe(response => { 
     const user = response.body; 
     if (user && user.token) { 
      localStorage.setItem(this.localStorageKey, JSON.stringify(user)); 
      return true; 
     } 

     localStorage.removeItem(this.localStorageKey); 
     return false; 
     }); 
    } 
+0

Sie geben keine Observable von * irgendetwas * von der Methode zurück, Sie geben ein Abonnement zurück. Aber im allgemeinen, um 'Observable 'zu' Observable 'zu konvertieren, müssen Sie' .map ((S) => T) '. – jonrsharpe

Antwort

0

Verwenden Sie den map Operator und die beobachtbare zurückzukehren.

login(username: string, password: string) { 
    const body = {username: username, password: password}; 
    return this.http.post<AuthResponse>(`${this.baseUrl}`, body, { observe: 'response' }).map(response => { 
    const user = response.body; 
    if (user && user.token) { 
     localStorage.setItem(this.localStorageKey, JSON.stringify(user)); 
     return true; 
    } 

    localStorage.removeItem(this.localStorageKey); 
    return false; 
    }); 
} 
+0

Warum 'switchMap' verwenden und Observables zurückgeben, anstatt' map' zu verwenden und boolesche Werte zurückzugeben? Da ist nichts Asynchrones zu beobachten. – jonrsharpe

+0

Natürlich ..., ich werde es bearbeiten. –

Verwandte Themen