Развернуть узел дерева матов по ключу - PullRequest
0 голосов
/ 08 июля 2019

У меня есть 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);
       }
     }
  }
}

Проблема этого решения заключается в том, что оно расширяет все узлы, как только ключ находится. Что я должен изменить или включить, чтобы сделать эту работу? Любая помощь будет великолепна.

...