2017-02-11 4 views
8

Ich habe, dass CodeTyp ‚boolean‘ ist nicht übertragbar ‚beobachtbar <boolean>‘ eingeben

method(): Observable<boolean> { 
    return this._http.get('sessionId=' + sessionId).map(res=> { 
     if (res.status === "success") { 
     return true; 
     } 
     return false; 
    }); 
} 

Aber wenn sessionId ist ‚‘ wirft es eine Ausnahme und Konsolenprotokolle 401 Fehler

und ich füge hinzu, wenn innerhalb dieser Methode:

method(): Observable<boolean> { 
    if (sessionId === '') 
     return false; 
    return this._http.get('sessionId=' + sessionId).map(res=> { 
     if (res.status === "success") { 
     return true; 
     } 
     return false; 
    }); 
    } 

Aber jetzt einen Fehler ich erhalte:

Wie kann ich das lösen?

Wenn ich Observable<boolean> | boolean fügen Sie dann Fehler Ich erhalte, dass

Property 'map' does not exist on type 'boolean | Observable'.

+1

Mögliche Duplikat [Typ ‚beobachtbar <{}>‘ ist nicht übertragbar ‚beobachtbar eingeben | boolean '] (http://stackoverflow.com/questions/38299484/type-observable-is-not-assignable-to-type-observableboolean-boolean) –

Antwort

14
method(): Observable<boolean> { 
    if (sessionId === '') 
     return false; // <<< obviously not an observable 

Dies sollte tun, was Sie wollen

method(): Observable<boolean> { 
    if (sessionId === '') 
     return Observable.of(false); 
    } 
    return this._http.get('sessionId=' + sessionId).map(res=> { 
     if (res.status === "success") { 
     return true; 
     } 
     return false; 
    }); 
    } 
+0

Sie sind mein Held :) P. S. Bitte entfernen Sie [] in. – gsiradze

+0

Danke für den Hinweis - behoben. –

+1

Vielen Dank @ GünterZöchbauer –

0

die Methode überprüfen:

import 'rxjs/add/observable/of'; 
Observable.of(); 

Sie kann Observables erstellen Felder und Ihr Problem mit so etwas wie dies lösen:

method(): Observable<boolean> { 
    if (sessionId === '') 
     return Observable.of(false); // Now we got an Observable instance 
    return this._http.get('sessionId=' + sessionId).map(res=> { 
     if (res.status === "success") { 
     return true; 
     } 
     return false; 
    }); 
    } 

Dokumentation: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-of

Verwandte Themen