Обновить словарь в объекте NgRx

Я пытаюсь обновить или, скорее, вставить новое значение в словарь под ngrx Entity.

Вот упрощенный вид Entity:

interface Dictionary<T> { [key: number]: T }

export class Item {
  id: number;
  partsDescriptions: Dictionary<string[]>;
}

export interface ItemsState extends EntityState<Item> {
}

Вот состояние приложения:

export interface AppState {
  items: ItemsState
}

В редукторе я пытаюсь сделать следующее:

on(MyActions.partDescriptionsLoaded, (state, action) => {
    return {
      ...state,
      items: adapter.updateOne({
        id: action.id,
        changes: {
          ...state.items[action.id],
          partsDescriptions: {
            ...(state.items[action.id] && state.items[action.id].partsDescriptions),
            [action.partId]: action.partDescriptions
          }
        }
      }, state.items)
    }
  })

Словарь PartDescriptions не расширяется, он всегда заменяется. У вас есть идеи, как решить эту проблему?


person rwasik    schedule 25.02.2021    source источник


Ответы (1)


В качестве общего ответа:
Имея объект в состоянии, скажем, descriptions, чтобы обновить его, а не заменить, вы сделаете что-то вроде:

descriptions: {
    ...state.descriptions,
    newDescriptions,
}


Что касается вашего кода, попробуйте сделать что-то вроде этого:

partsDescriptions: {
    ...state.partsDescription,
    elementsYouWantToExtendThisObjectWith,
}
person Damian-Teodor Beleș    schedule 25.02.2021