NGXS - выбор дочернего состояния из родительского состояния - PullRequest
0 голосов
/ 03 мая 2019

Я изучаю NGXS и у меня есть модель состояния с вложенными отношениями родитель / потомок, где есть некоторое количество родителей, у каждого из которых есть свой собственный набор детей (и внуков), что-то вроде этого:

state: {
    parents: ParentModel[]
}

ParentModel {
    children: ChildModel[]
}

ChildModel {
   grandchildren: GrandChildren[]
}

etc.

Однако, когда состояние моделируется в реализациях с избыточностью / потоком, вышеприведенный пример (насколько я знаю) обычно нормализуется.

Я бы хотел иметь доступ к детям и внукам так, как это соответствует ментальной модели дерева состояний. Лучшее, что я придумал, это по сути создать «ленивый селектор», как описано в документации (https://ngxs.gitbook.io/ngxs/concepts/select#lazy-selectors)

Как это:

export class ChildRecordState {
@Selector()
    static childRecords(state: ChildRecordModel) {
        return (id: number) => state.Records.filter(r => r.parentId === id);
    }
// ...
}

(Полный пример без внуков здесь: https://stackblitz.com/edit/angular-ngxs-parent-child).

Я вижу, что есть Sub State, к которому можно получить доступ, и я могу создать селектор, используя его в родительском элементе, но на самом деле это не сильно улучшает результат. Вопрос в том, есть ли лучший способ доступа к дочерним элементам родительского объекта, чем показано в примере / stackblitz?

...