2017-02-11 8 views
8

mam ten kodTyp „logiczna” nie jest przypisane do typu „Obserwowalne <boolean>”

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

Ale kiedy sessionId jest „” zgłasza wyjątek i dzienniki konsoli 401 błędach

i dodam, jeśli wewnątrz tej metody:

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

Ale teraz otrzymuję błąd:

Type 'boolean' is not assignable to type 'Observable'.

Jak mogę to rozwiązać?

Jeśli dodać Observable<boolean> | boolean następnie Dostaję błąd, który

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

+1

Możliwy duplikat [Type 'Obserwowalne <{}>' nie jest przypisane do typu „obserwowalnych | boolean '] (http://stackoverflow.com/questions/38299484/type-observable-is-not-assignable-to-type-observableboolean-boolean) –

Odpowiedz

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

ten powinien robić to, co chcesz

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

jesteś moim bohaterem :) P.S. proszę usunąć [] w. – gsiradze

+0

Dzięki za podpowiedź - naprawiono. –

+1

Dziękuję bardzo @ GünterZöchbauer –

0

Sprawdź metodę:

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

You może tworzyć obserwacje z pola i rozwiązać swój problem z czymś takim:

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; 
    }); 
    } 

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