У меня есть приложение angular 6 с ngrx, и у меня проблемы с тем, как правильно определить действия и состояние.
Действия:
export class LoadUsers implements Action {
readonly type = UserActionTypes.LoadUsers;
constructor(public payload: { pagination: Pagination }) {
}
}
export class LoadUsersSuccess implements Action {
readonly type = UserActionTypes.LoadUsersSuccess;
constructor(public payload: { users: User[], pagination: Pagination}) {
}
}
Интерфейс разбиения на страницы:
export interface Pagination {
pageSize?: number;
pageIndex?: number;
orderBy?: string;
dir?: string;
filter?: string;
}
Состояние:
export interface State {
pagination: Pagination;
users: User;
}
Редуктор:
export function reducer() {
switch (action.type) {
case UserActionTypes.LoadUsersSuccess: {
return {
...state,
pagination: action.payload.pagination,
users: action.payload.users
};
}
}
}
и эффекты:
@Effect()
loadUsers$ = this.actions$.pipe(
ofType(UserActionTypes.LoadUsers),
map((action: LoadUsers) => action.payload.pagination),
switchMap((pagination: Pagination) => {
return this.usersService.getUsers(pagination).pipe(
map((response: any) => {
const payload = {
users: response.users,
pagination: pagination,
};
return new LoadUsersSuccess(payload);
}),
catchError((error) => of(new LoadUsersFail()))
);
})
);
Проблема, например, в компоненте, где я хочу отобразить пользователей из магазина,Прежде всего я должен отправить действие LoadUsers, но для каких параметров?для актуальных параметров нумерации страниц из магазина?Но когда я подписываюсь на это, каждый раз, когда это будет изменено, действие LoadUsers будет отправлено снова.Может быть, для параметров нумерации страниц из начального состояния, но это хороший подход?
Это правильный способ реализации нумерации страниц или я должен определить действие, такое как ChangePaginationParams (), которое в редукторе назначает новые параметры пагинации для хранения и эффект загрузки пользователейдля этого новых параметров?Но что делать в ситуации, когда эффект будет иметь ошибку, если он каким-то образом обратит изменения в магазине, потому что пользователи не подойдут для параметров пагинации в магазине.
Может быть, вы можете предоставить мне реальное решение, пример приложениягде нумерация страниц осуществляется с помощью ngrx?