2017-02-11 75 views
8

我有一個代碼類型「布爾」是不能分配給輸入「可觀察<boolean>」

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

但當sessionId是「」它拋出一個異常和控制檯日誌401錯誤

,我添加如果

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

但現在我得到一個錯誤:

這個方法裏面

我該如何解決這個問題?

如果我添加Observable<boolean> | boolean然後我收到錯誤

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

+1

可能的複製[類型「可觀察<{}>」是不能分配給輸入「可觀察 |布爾'](http://stackoverflow.com/questions/38299484/type-observable-is-not-assignable-to-type-observableboolean-boolean) –

回答

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

這應該做你想要

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

你是我的英雄:) P.S.請刪除中的[]。 – gsiradze

+0

感謝您的提示 - 修正。 –

+1

謝謝soo @GünterZöchbauer –

0

檢查方法是什麼:

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

你可以從中創建Observables領域,並與像這樣解決問題:

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

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

相關問題