Angular 和 NGRX:使用 NGRX 实体对选择器进行过滤

pra*_*lli 4 filter typescript ngrx angular ngrx-entity

我正在尝试按属性过滤掉有效负载数据。

 //reducer.ts

  case MessagesActionTypes.LOAD_Message_SUCCESS: {
      console.log('reducer='+ 
      JSON.stringify(action.payload.Messages));//receiving data here
      return adapter.addAll(action.payload.Messages, state);
    }

    export const getSelectedMessageId = (state: MessageState) => state.selectedMessageId;

// get the selectors
const { selectIds, selectEntities, selectAll, selectTotal } = adapter.getSelectors();


// select the array of Messages
export const selectAllMessages = selectAll;
Run Code Online (Sandbox Code Playgroud)

下面是选择器

 //     Selector.ts

export const selectHomeQueues = createSelector(
  fromReducer.selectAllMessages,
 (messages) => messages.filter(message => message.queue === 'HOME')
 );
Run Code Online (Sandbox Code Playgroud)

我正在减速器中接收数据,但在运行时选择器中出现错误ERROR TypeError: Cannot read property 'map' of undefined

注意:我在任何地方都找不到任何有关 NGRX 实体选择器中过滤的示例。

我们如何过滤 NGRX 实体中的选择器?

ldg*_*man 6

我有完全相同的问题。您需要将选择器稍微更改为:

export const selectHomeQueues = createSelector(
  selectAllMessages,
 (messages) => messages.filter(message => message.queue === 'HOME')
 );
Run Code Online (Sandbox Code Playgroud)

selectAllMessages您简单定义为的选择器在哪里:

export const selectAllMessages = createSelector(
  fromReducer.selectAllMessages
 );
Run Code Online (Sandbox Code Playgroud)

我们最初尝试执行此操作的方式是通过适配器,我怀疑我们在此过程中的某个地方犯了一个小错误或误解。

此问题是由于 Angular 或 Redux 版本升级而导致的。不确定数字。