NgRx Параметризованный селектор, показывающий пустой результат - PullRequest
0 голосов
/ 10 февраля 2019

Попытка использовать параметризованный запрос в NgRx, но получение пустого результата.

Вот приведенная ниже версия стекаблиц-кода: https://stackblitz.com/edit/ngrx-parameterized-query

Код редуктора

export const userAdapter = createEntityAdapter<UserModel>({
  selectId: x => x.UserId
});
export interface UserlistState extends EntityState<UserModel>{

};

export const initialState: UserlistState = userAdapter.getInitialState({

}); 


export function UserlistReducers(
  state: UserlistState = initialState,
  action: actions.UserlistActions
){
  switch(action.type){

    case actions.UserlistActionTypes.UPSERT_USERS:
      return userAdapter.upsertMany(action.users,state);

    default:
      return state;
  }
}

export const getUserlistState = createFeatureSelector<UserlistState>('userlist');

export const {
  selectIds,
  selectEntities,
  selectAll,
  selectTotal
} = userAdapter.getSelectors(getUserlistState);

export const getUsersByOrganizationId = createSelector(selectAll,
    (users: Array<UserModel>, organization_id: number)=>{
        return users.filter(x=> x.OrganizationId == organization_id)
    }
)

Использование

watchlist = ():Observable<UserModel[]> =>{
        return this.userlistStore.select(reducers.selectAll);
    }

    watchlistByOrganizationId = (organization_id: number): Observable<UserModel[]> =>{
        return this.userlistStore.select(reducers.getUsersByOrganizationId(organization_id));
    }

1 Ответ

0 голосов
/ 10 февраля 2019

Ваш селектор неправильный.

Так и должно быть;organization_id является параметром функции селектора, поэтому он доступен в области действия функции и нет необходимости добавлять его в список параметров функций стрелок.selectAll вернет пользователей и передаст его в качестве аргумента функции стрелки.Ниже должно работать как задумано!

export const getUsersByOrganizationId = (organization_id: number) => createSelector(selectAll,
  (users: Array<UserModel>) => {
    return users.filter(x => x.OrganizationId == organization_id)
  }
);

StackBlitz без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...