通过键扩展垫树节点

时间:2019-07-08 02:10:29

标签: javascript angular typescript recursion angular-material2

我的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);
       }
     }
  }
}

此解决方案的问题在于,一旦找到密钥,它就会扩展所有节点。为了使这项工作有效,我应该更改或包括哪些内容?任何帮助都会很棒。

0 个答案:

没有答案