2017-02-11 39 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

相关问题