NGRX — Как использовать селектор внутри карты на другом селекторе?

#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]
);