有人能告诉我如何从我的树中删除特定节点吗?
示例:根节点(this.documentsTree[0]) children(this.documentsTree[0].children[0], this.documentsTree[0].children[1])。第一个孩子也有一个孩子(this.documentsTree[0].children[0].children[0]) <= 这只是一个小例子。我正在使用 Angular 并且我正在使用来自PrimeNG 的Tree 。下面你可以看到我的代码的一部分。谢谢!:
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是我用于从适用于您的示例的primeng 树中删除的方法,假设您的节点数据具有唯一标识符(例如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;
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:this.deleteNode(this.documentsTree[0], selectedNode);
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |