Дано дерево данных бесконечного уровня, связанное с дочерним компонентом.
dataTree = [ { name: 'root level', children: [{ name: 'root level
first child', children: [...more children here...] }] } ]
Родительский компонент привязывает это дерево данных к своему дочернему элементу.
В дочернем компоненте dataTree добавляется в TreeController и перечисляется / отображается в шаблоне, и я хотел бы следить за изменениями в связанном @Input dataTree:
- если новый элемент списка был добавлен на любой уровень
- если какой-либо элемент списка был удален
- если значение какого-либо свойства изменилось на любом уровне
Я уже знаю, что KeyValue и Iterable Differ могут использоваться для этой задачи, но мне это не очень нравится в этом случае, потому что мне нужен полный обход дерева.
Другая идея заключается в создании службы, в которой было бы dataTree, а дочерний компонент подписывался на изменения через Subject. Есть несколько веских причин, по которым я не хочу пользоваться услугами здесь ...
Есть ли идеи, как я могу решить эту проблему хорошим способом?