【发布时间】:2021-01-22 22:51:00
【问题描述】:
我有一个 ngrx 商店选择器:
export const selectActivePracticeUsersListSnapshot = pipe(
select(selectPracticeUsersList),
filter((users) => !!users),
take(1),
map((users) => users.filter((user) => user.active))
);
我有一个服务被注入到包含以下方法的多个组件中:
public getTeamMembersWithAccess(permission: string): string[] {
let flagAvatars: string[];
this.store.dispatch(loadUsers());
this.store.pipe(selectActivePracticeUsersListSnapshot).subscribe((activePracticeUsers) => {
flagAvatars = activePracticeUsers.reduce((teamMembers, activeUser) => {
if (!!activeUser.permissions[permission]) {
const { firstName, lastName } = activeUser;
return [...teamMembers, `${firstName} ${lastName}`];
}
return teamMembers;
}, []);
});
return flagAvatars;
}
我因此从我的组件中调用它:
constructor(private helperService: HelperService) {
const flagAvatars = this.helperService.getTeamMembersWithAccess('AdminPage');
}
我的问题是服务方法返回 undefined 因为 let flagAvatars: string[]; 在订阅商店选择器返回之前,因为它正在等待 loadUsers( ) 来完成。我知道我需要更改 getTeamMembersWithAccess() 方法以以某种方式返回 Observable
【问题讨论】:
标签: angular ngrx-store rxjs-observables