У меня проблема с NGXS. У меня есть массив объектов, и я отредактировал один из объектов, отправив действие. Теперь, когда я нажимаю кнопку сброса, я хочу перейти к родительскому компоненту и сбросить состояние до исходного, поэтому я сохранил копию исходного объекта. Но проблема в том, что когда я выполняю операцию выбора в родительском компоненте, он все равно возвращает старый объект.
@Select(ItemState.getItems) ItemNGXS: Observable<ItemStateModel>;
Что я могу делать неправильно?
Код кнопки сброса:
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
Метод item.state.ts editItem:
@Action(EditItem)
edit({ getState, setState }: StateContext<ItemStateModel>, { payload }: EditItem) {
const state = getState();
const ItemList = [...state.items];
const index = itemList.findIndex(item => item.Id === payload.Id);
itemList[index] = JSON.parse(JSON.stringify(payload));
setState({
...state,
items: itemList
});
}
Я заметил, что getItems возвращает состояние обратно в старое состояние (т.е.) перед редактированием. Я не уверен, почему Selector возвращает его в старое состояние.
Я исправил этот. На самом деле у меня где-то было одно действие перед этим, которое вызывало проблему. Я удалил его, и это сработало. Спасибо!
Добавьте свое решение в качестве ответа.
Я добавлю его завтра, так как у меня сейчас нет кода. Проблема заключалась в том, что перед выбором у меня было действие, которое извлекало данные и сохраняло их. Это было исправлено в тот момент, когда я переместил его.





Я получил это решение. Это была глупая ошибка с моей стороны.
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
После маршрутизации к компоненту я отправлял действие, которое устанавливало состояние на старые данные. Я переместил код в правильное место, и он был исправлен.
покажи мне свой селектор, как ты используешь
ItemNGXSobservable и свою модель состояния