#angular #ngrx #ngrx-store #ngrx-entity #ngrx-selectors
Вопрос:
Я пытаюсь создать селектор, который возвращает список объектов с дополнительными полями, добавленными из другого селектора. Вот селектор, который я пытаюсь использовать:
//Get a full list of Users with their Roles added
export const getUsersWithRoles = createSelector(
getAllUsers,
(userList) => userList.map(user => getUserWithRolesById(user.userId))
);
//Get User and add their Roles to the object
export const getUserWithRolesById= (userId: string) => createSelector(
getUserById(userId),
getRoleListByUserId(userId),
(user, roles) => {
const userWithMembership = {...user, roles: roles} as UserTableItem;
return userWithMembership;
}
);
Однако getUsersWithRoles
селектор возвращает массив MemoizedSelectors вместо массива объектов. Как я могу использовать этот getUserWithRolesById
селектор в map
первом селекторе?
Все остальное работает, как и ожидалось, с шаблоном сущности ngrx, но я перечислю некоторые селекторы, которые вызываются в приведенном выше коде:
//Selectors
export const getUserManagerDataState = createFeatureSelector<UserManagerState>(USER_MANAGER_DATA_FEATURE_KEY);
export const getUsersState = createSelector(
getUserManagerDataState,
(state) => state.userState
);
export const getAllUsers = createSelector(
getUsersState,
UserAdapterSelectors.selectAll
);
export const getUserById = (userId: string) => createSelector(
getUserManagerDataState,
state => state.userState.entities[userId]
);