TreeNode - PrimeNG - Typescript:如何从树中删除节点?

时间:2018-02-08 11:32:14

标签: angular typescript primeng

有人可以告诉我如何从树中删除特定节点吗?

实施例:  根节点(this.documentsTree [0])  孩子们(this.documentsTree [0] .children [0],this.documentsTree [0] .children [1])。第一个孩子也有一个孩子(this.documentsTree [0] .children [0] .children [0])&lt; =这只是一个小例子。我正在使用Angular,我正在使用 PrimeNG 中的树。下面你可以看到我的代码的一部分。 <!强>感谢:

import {TreeModule} from 'primeng/tree';
import {TreeNode} from 'primeng/api';
export class DocumentsComponent implements OnInit {

documentsTree: TreeNode[] = [];


private createNode(category: CategoryModel) {
 let node = {
   data: category,
   label: category.name,
   expandedIcon: "fa-folder-open",
   collapsedIcon: "fa-folder",
   expanded: category.id == 1,
   children: [],
   leaf: false
 };
 category.children.forEach(x => node.children.push(this.createNode(x)));
 return node;
 }

private loadCategoryTree() {

  this.documentsTree = [];
  var node = this.createNode(this.documentCategoryDTO);
  this.documentsTree = [node];
  this.documentsTreeAux = this.documentsTree;
} 

1 个答案:

答案 0 :(得分:1)

这是我用于从适合您的示例的素树删除的方法,假设您的节点数据具有唯一的标识符(例如ID)。

deleteNode(topNode: TreeNode, selectedNode: TreeNode) {
        if (topNode.children != null) {
            var i;
            for (i = 0; i < topNode.children.length; i++) {
                if (topNode.children[i].data.id == selectedNode.data.id) {
                    topNode.children.splice(i, 1);   
                    return;
                }
                else this.deleteNode(topNode.children[i], selectedNode);
            }
        }
        else return;
    }

您可以像这样使用它:this.deleteNode(this.documentsTree[0], selectedNode);

希望这会有所帮助。