1
hasPrivilege(privilege: string): boolean {
let isPrivilege: PrivilegeModel[] = [];
let val : boolean;
if (this.loginService.privilegeList != null && this.loginService.privilegeList != undefined && this.loginService.privilegeList.getValue() != null) {
isPrivilege = this.loginService.privilegeList.getValue().filter(item => item.name === privilege);
return this.isPrivilege(isPrivilege);
} else {
let val = this.getUserRolesAndMenus(privilege);
console.log("after2" +val);
this.getUserRolesAndMenus().subscribe(result => {
let val = result.roles.filter((element: any) => {
return element.privileges.filter(function (item: any) {
return item.name === privilege
}).length != 0
}).length !=
return val; // can't return this.
},() =>{console.log("completed")})
}
}
サブスクライブからブール値を返すにはどうすればよいですか?これを達成するための回避策はありますか?anuglarのサブスクライブからブール値を返す方法2
これは、サーバーのコール
getUserRolesAndMenus() : Observable<boolean> {
let headers = new Headers();
return this.http.get(ROLES_AND_MENUS + AppUtils.ID, { headers: headers })
.map(response => response.json())
.catch(this.handleError)
}
未定義のプロパティ 'subscribe'を読み取ることができません。このサブスクライブでは、サブスクライブできません。 this.hasPrivilege(..)。subscribe中にエラーが発生しました。(boolValue => { – user630209
どこからメソッドを呼び出しますか? 'this'キーワードなしで多分試してください... – Jonathan
" "それは正常に動作し、" else "からエラーが返されます。 – user630209