Я создаю приложение todo со списком задач, которые также могут иметь суб Todos.Перед использованием ngrx моя модель выглядела так:
export interface Todo {
id: string;
title: string;
isDone?: boolean;
parentId?: string;
subTodos?: [Todo];
}
<todo *ngFor="let todo of todoss$|async">
<todo *ngFor="let subTodo of todo.subTodos"></todo>
</todo>
Это было удобно для отображения данных внутри представления, поскольку я мог использовать для этого вложенные *ngFor
s.Поскольку логика редуктора для обновления подзадач немного усложнилась, я подумал об использовании сущностей.Но нормализация данных, кажется, идет с некоторыми компромиссами.Теперь мне нужно не только отфильтровать свои Todos, чтобы удалить подзадачи из основного списка, но и запросить данные для каждого отдельного SubTodo.Похоже, что для упрощения логики обновления делается много вычислений.
Модель выглядит следующим образом:
export interface Todo {
id: string;
title: string;
isDone?: boolean;
parentId?: string;
subTodos?: [string]; // an Todo.id
}
Я много читал о ngrx, но не смог найти ни одного примерас такой структурой данных.Мне интересно, как бы вы решили эту проблему?Вы всегда нормализуете свои массивы и разделяете связанные модели?И если да, вы денормализуете данные, когда используете их в своих представлениях, или вы просматриваете их в обозначенных компонентах (что мне некрасиво)?А как вы проектируете интерфейсы, если так?Вы создаете два отдельных интерфейса для модели представления и модели состояния?