НГКС | Выберите после возврата старых данных маршрута

У меня проблема с 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 возвращает его в старое состояние.

покажи мне свой селектор, как ты используешь ItemNGXS observable и свою модель состояния

overthesanity 27.07.2019 22:27

Я исправил этот. На самом деле у меня где-то было одно действие перед этим, которое вызывало проблему. Я удалил его, и это сработало. Спасибо!

Sunil Ojha 04.08.2019 18:49

Добавьте свое решение в качестве ответа.

Scuba Kay 12.08.2019 10:46

Я добавлю его завтра, так как у меня сейчас нет кода. Проблема заключалась в том, что перед выбором у меня было действие, которое извлекало данные и сохраняло их. Это было исправлено в тот момент, когда я переместил его.

Sunil Ojha 12.08.2019 11:02
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
540
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил это решение. Это была глупая ошибка с моей стороны.

 resetArray() {
    this._store.dispatch(new EditItem(this.originalItem))
      .subscribe(res => {
        this._route.navigate(['questionnaire']);
    });
  }

После маршрутизации к компоненту я отправлял действие, которое устанавливало состояние на старые данные. Я переместил код в правильное место, и он был исправлен.

Другие вопросы по теме