2017-09-06 2 views
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); 
      }); 
     } 
    } 

からのリターンは、それが例外をスローしながら、「観測」エラーを入力する割り当て可能ではありません'Observable'。 プロパティ '_isScalar'が 'サブスクリプション'タイプにありません。 (メソッド)UserService.getUserRolesAndMenus():Observable ユーザーの詳細を取得します。 'タイプ「サブスクリプション」[TS]</p> <p>タイプ「サブスクリプション」タイプに割り当てない<p> </p>としてライン7に加入

ここで間違っていますか?

/** 
    * 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();*/ 
    } 
+1

これは:return 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

+1

this.getUserRolesAndMenus()、これは観測可能オブジェクトを返します。 getUserRolesAndMenus()コードが追加されました。 – user630209

+1

@cartant:どのように私はこれを修正することができ、観測可能なブール値を返す必要があります。 – user630209

答えて

2

Observableの代わりにサブスクリプションを返しています。 subscribeswitchMapに変更してください。 Observableを返し、の結果をObservableで置き換えます。Observable.of(...)

関連する問題