У меня следующий @Effect ():
updateRole$ = this.actions$
.pipe(
ofType<RoleUpdated>(RoleActionTypes.RoleUpdated),
mergeMap(( { payload } ) => {
this.store.dispatch(this.showActionLoadingDistpatcher);
return this.auth.updateRole(payload.role);
}),
map(() => {
return this.hideActionLoadingDistpatcher;
}),
);
Это мой код действия в role.action.ts:
readonly type = RoleActionTypes.RoleUpdated;
constructor(public payload: {
partialrole: Update<Role>,
role: Role
}) { }
}
Эти два связанных случая относятся к моей роли. reducer.ts:
case RoleActionTypes.RoleUpdated: return adapter.updateOne(action.payload.partialrole, state);
case RoleActionTypes.RolesPageLoaded: return adapter.addMany(action.payload.roles, {
...initialRolesState,
listLoading: false,
queryRowsCount: action.payload.totalCount,
queryResult: action.payload.roles,
lastQuery: action.payload.page,
showInitWaitingMessage: false
});
Это код файла role.selector.ts:
export const selectQueryResult = createSelector(
selectRolesState,
rolesState => {
const items: Role[] = [];
each(rolesState.entities, element => {
items.push(element);
});
const httpExtension = new HttpExtenstionsModel();
const result: Role[] = httpExtension.sortArray(items, rolesState.lastQuery.sortField, rolesState.lastQuery.sortOrder);
return new QueryResultsModel(result, rolesState.queryRowsCount, '');
}
);
Это функция обновления в role-edit.dialog.component.ts
updateRole(_role: Role) {
this.loadingAfterSubmit = true;
this.viewLoading = true;
/* Server loading imitation. Remove this on real code */
const updateRole: Update<Role> = {
id: this.role.id,
changes: _role
};
this.store.dispatch(new RoleUpdated({
partialrole: updateRole,
role: _role
}));
this.viewLoading = false;
this.dialogRef.close({
_role,
isEdit: true
});
}
Проблема в том, что когда я редактирую конкретную запись из mat-table и пытаюсь обновить роль запись, она обновляет мои изменения в таблице после сохранения изменяется, но когда он извлекает записи через api из серверной части, эти записи также обновляются, но , к сожалению, через некоторое время таблица загружает старые данные .
У меня отлажено и выясняется, что после изменений обновленные записи, поступающие через api (обновлены в базе данных). Но я думаю, что есть проблема с кешем или что-то еще, что я не могу понять. Я пробовал много изменений, но, кажется, бесполезно обсуждать, и этот код кажется правильным. Пожалуйста, помогите мне решить эту проблему. Не знаю, как избежать кеширования данных в angular. Я новичок и учусь angular. Спасибо