Replies: 1 comment 1 reply
-
fallback используется если не нашлось значения в map, тебе надо в map проставлять открытость/закрытость узла, после появления его в мапе fallback уже ничего не даёт. Можешь сделать https://taiga-ui.dev/stackblitz с тем, что у тебя сейчас уже есть, чтобы можно было поковыряться? |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Добрый вечер. Заранее прошу прощения, если задаю какой-то глупый вопрос (ведь я всего на ангуляре пол года работаю и лишь 2 месяца использую Taiga UI).
Хочу задать вопрос о реализации кастомного tuiTreeController, ибо нигде не смог найти информации. Пытаюсь реализовать поиск по дереву в отдельно инпуте и он работает. Я хочу, чтобы все родительские узлы определенного узла раскрывались, а сам узел не раскрывался. Я покопался в коде Taiga UI и нашел там TuiTreeItemController, у которого можно менять fallback, а также вызывать методы isExpanded() и toggle - может при помощи этого можно как-то реализовать? Просто я нигде не нашел информации об этом.
Задумка такая:
изначально все узлы (т.е. все tui-tree) свёрнуты (см. скриншот 1),

(на скриншоте интерполяцией сперва идёт имя узла, затем его id и следом true/false значение самой функции treeControllerFoo(item))
когда в поиске вводится символ - происходит фильтрация дерева и данные нового отфильтрованного дерева вставляются в filteredTree, а также в поле класса

protected parentsOfMatchedNodesMap = new Map<string, boolean>();
вставляется nodeId узла-родителя и true затем дерево рендерится. При каждом рендере tui-tree вызывается treeControllerFoo(item):treeControllerFoo(item: TreeNode): boolean { return this.parentsOfMatchedNodesMap.get(item.nodeId) ?? false; }
То есть treeControllerFoo(item) для всех родительских узлов того узла, который удовлетворил результату поиска, должен ставить в tui-tree в [tuiTreeController] значение true. Проблема: при отрисовке дерева открываются все узлы - даже тот узел, у которого значение false (см. скриншот 2)
(на скриншоте видно противоречие: хоть и справа от "Кафедра теоретической механики" написано false - а это результат функции treeControllerFoo(item) - узел почему-то развёрнут (хотя развёрнут он должен быть только в случае true...))
Как выглядит дерево в html шаблоне:
<tui-tree *ngFor="let item of filteredTree?.children" [childrenHandler]="handler" [content]="content" [tuiTreeController]="treeControllerFoo(item)" [value]="item" />
Интерфейс узла:
interface TreeNode { readonly children?: readonly TreeNode[]; readonly text: string; readonly nodeId: string; }
Beta Was this translation helpful? Give feedback.
All reactions