1
setPrivileges(privilege: string): Observable<boolean> {
if (this.loginService.privilegeList != null && this.loginService.privilegeList != undefined && this.loginService.privilegeList.getValue() != null) {
this.privileges = this.loginService.privilegeList.getValue().filter(item => item.name === privilege);
console.log("if this.privileges : "+this.privileges);
return Observable.of(true);
} else {
return this.getUserRolesAndMenus().subscribe((result: any) => { // line 7
console.log("result :"+JSON.stringify(result));
this.privileges = result.roles.filter((element: any) => {
element.privileges.filter((item: any) => {
item.name === privilege;
})
})
console.log("esle this.privileges : "+this.privileges);
if(this.privileges == null)
return Observable.of(true);
else
return Observable.of(true);
});
}
}
在第7行,它拋出異常作爲類型「訂閱」不是分配給輸入「可觀察」的錯誤,同時從返回訂閱
[TS]
類型「訂閱」不是分配給輸入「可觀測」。 「訂閱」類型中缺少屬性'_isScalar'。 (方法)UserService.getUserRolesAndMenus():Observable 獲取用戶詳細信息。 '
這裏有什麼問題嗎?
/**
* To get the user details.
*/
getUserRolesAndMenus(): Observable<any> {
let headers = new Headers();
headers.append(AppUtils.HEADER_AUTHENTICATION, localStorage.getItem(AppUtils.STORAGE_ACCOUNT_TOKEN));
return this.http.get(AppUtils.GET_USER_ROLES_AND_MENUS + AppUtils.SYSTEM_ID_IRS, { headers: headers })
.map(response => response.json())
.catch(this.handleError)
/* .publishReplay(1)
.refCount();*/
}
這樣:'this this.getUserRolesAndMenus()。subscribe'。 ['subscribe'](https://github.com/ReactiveX/rxjs/blob/5.4.3/src/Observable.ts#L74-L76)方法不會返回'Observable';它會返回['Subscription'](http://reactivex.io/rxjs/class/es6/Subscription.js~Subscription.html)。 – cartant
this.getUserRolesAndMenus(),它返回一個observable。更新了添加getUserRolesAndMenus()代碼的問題。 – user630209
@cartant:我該如何解決這個問題,需要返回observable布爾值。 – user630209