Typescript 类型';认购';不可分配给类型';可观察的';从订阅返回时出错 setPrivileges(privilege:string):可观察{ 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); log(“如果this.privileges:+this.privileges”); 可观察的返回(真); }否则{ 返回此.getUserRolesAndMenus().subscribe((结果:any)=>{//第7行 log(“结果:+JSON.stringify(结果)); this.privileges=result.roles.filter((元素:any)=>{ element.privileges.filter((项:any)=>{ item.name==特权; }) }) log(“esle this.privileges:+this.privileges”); if(this.privileges==null) 可观察的返回(真); 其他的 可观察的返回(真); }); } }

Typescript 类型';认购';不可分配给类型';可观察的';从订阅返回时出错 setPrivileges(privilege:string):可观察{ 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); log(“如果this.privileges:+this.privileges”); 可观察的返回(真); }否则{ 返回此.getUserRolesAndMenus().subscribe((结果:any)=>{//第7行 log(“结果:+JSON.stringify(结果)); this.privileges=result.roles.filter((元素:any)=>{ element.privileges.filter((项:any)=>{ item.name==特权; }) }) log(“esle this.privileges:+this.privileges”); if(this.privileges==null) 可观察的返回(真); 其他的 可观察的返回(真); }); } },typescript,rxjs,Typescript,Rxjs,在第7行,它抛出异常作为 [ts] 类型“Subscription”不可分配给类型“Observable”。 类型“订阅”中缺少属性“\u isScalar”。 (方法)UserService.getUserRolesAndMenus():可观察 以获取用户详细信息。 " 这里做错了什么 setPrivileges(privilege: string): Observable<boolean> { if (this.loginService.privilege

在第7行,它抛出异常作为

[ts]

类型“Subscription”不可分配给类型“Observable”。 类型“订阅”中缺少属性“\u isScalar”。 (方法)UserService.getUserRolesAndMenus():可观察 以获取用户详细信息。 "

这里做错了什么

    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);
            });
        }
    }
/**
*以获取用户详细信息。
*/
getUserRolesAndMenus():可观察{
let headers=新的headers();
append(AppUtils.HEADER\u身份验证,localStorage.getItem(AppUtils.STORAGE\u ACCOUNT\u令牌));
返回this.http.get(AppUtils.get_用户_角色_和_菜单+AppUtils.SYSTEM_ID_IRS,{headers:headers})
.map(response=>response.json())
.接住(这个.把手错误)
/*.publishReplay(1)
.refCount()*/
}

您返回的是订阅,而不是可观察的订阅。将
subscribe
更改为
switchMap
。这将返回一个Observable,并用(…)的Observable.of创建的Observable替换
getUserRolesAndMenus的结果:
返回此.getUserRolesAndMenus().subscribe
。该方法不返回可观察的
;它返回一个.this.getUserRolesAndMenus(),它返回一个可观察的。更新了添加getUserRolesAndMenus()代码的问题。@cartant:如何解决此问题,需要返回可观察的布尔值。
/**
     * 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();*/
    }