У меня есть mat-tree
, структурированный так:
[
{
key: 'a',
value: 'a1',
children: [
{
key: 'b',
value: 'b1',
children: [
{
key: 'c',
value: 'c1
}
]
},
{
key: 'd',
value: 'd1',
children: [
{
key: 'e',
value: 'e1',
}
]
}
]
}
]
Я пишу рекурсивный метод, который бы просто расширил родословную соответствующего ключа. Например, если вводится ключ c
, следует развернуть только узлы a, b, c
, но не другие дочерние элементы или узлы в этом случае.
Вот как я это делаю:
expandNodes(node: TreeNode, key: string) {
if (node.key === key) {
this.keyFound = true;
this.treeControl.expand(node);
}
if (node.children) {
for (let i = 0; i < node.children.length; i++) {
this.expandNodes(node.children[i], key);
if (this.keyFound) {
this.treeControl.expand(node);
}
}
}
}
Проблема этого решения заключается в том, что оно расширяет все узлы, как только ключ находится. Что я должен изменить или включить, чтобы сделать эту работу? Любая помощь будет великолепна.