как использовать селекторы сущностей ngrx?

Я использую объект ngrx для своего магазина, проблема: я не могу выбрать объекты магазина с помощью селекторов. я сделал как код в этом примере https://github.com/angular-university/angular-ngrx-course/blob/master/src/app/courses/course.selectors.ts

в моей ситуации, когда я использую выбор в магазине, я получаю объект магазина, а не объекты.

это мой редуктор:

reducer

это селекторы:  selectors

это компонент:  введите описание изображения здесь

это журнал из выбранного в магазине, я ожидал объект сущностей и получил следующее: < img src = "https://i.stack.imgur.com/rt221.png" alt = "введите описание изображения здесь">

это магазин:  введите описание изображения здесь


person Alex Koretzki    schedule 06.01.2019    source источник


Ответы (1)


Причина в том, что селектор заключен внутри функции.

const selectAll = () => createSelector(selectFoo, entities.selectAll);

Поэтому вам нужно вызвать функцию, чтобы получить данные селектора вместо хранилища.

this.data = this.store.select(selectAll());

Но у меня вопрос, почему селектор обернут, это действительно не нужно. Ты можешь сделать:

const selectAll = createSelector(selectFoo, entities.selectAll);

И в своем компоненте вы можете использовать его, как сейчас:

this.data = this.store.select(selectAll);

Для получения дополнительной информации ознакомьтесь с моей статьей NgRx: параметризованные селекторы

person timdeschryver    schedule 06.01.2019
comment
Я все еще получаю тот же результат. объект магазина, а не сущности. экспорт const selectEstateOwnersState = createFeatureSelector ‹EstateOwnersState› ('estateOwners'); экспорт const selectAllEstateOwners = createSelector (selectEstateOwnersState, fromEstateOwner.selectAll); - person Alex Koretzki; 06.01.2019
comment
Имейте в виду, что селектор возвращает наблюдаемое. Если вы зарегистрируете tblData, вы получите наблюдаемое. Используйте асинхронный конвейер в HTML для получения данных или используйте операторы rxjs в коде, если вы просто хотите регистрировать данные. - person timdeschryver; 06.01.2019
comment
fwiw, преимущество использования фабричного подхода к селекторам заключается в оптимизации поведения заметок / кеширования ngrx для селекторов. Из документации: чтобы правильно запоминать селектор, оберните селектор внутри фабричной функции, чтобы создать разные экземпляры селектора. Кроме того, поскольку селекторы с реквизитами устарели, фабрика с параметрами станет новым способом создания селекторов с реквизитами. - person acat; 17.06.2021