TreeNode - PrimeNG - 打字稿:如何从树中删除节点?
Posted
技术标签:
【中文标题】TreeNode - PrimeNG - 打字稿:如何从树中删除节点?【英文标题】:TreeNode - PrimeNG - Typescript: How to Remove a node from tree? 【发布时间】:2018-02-08 11:32:14 【问题描述】:谁能告诉我如何从我的树中删除一个特定的节点?
示例: 根节点(this.documentsTree[0]) 孩子(this.documentsTree[0].children[0],this.documentsTree[0].children[1])。第一个孩子也有一个孩子(this.documentsTree[0].children[0].children[0]) 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;
【问题讨论】:
【参考方案1】:这是我用于从适合您的示例的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;
你可以这样使用它:this.deleteNode(this.documentsTree[0], selectedNode);
希望这会有所帮助。
【讨论】:
这可行,但不会刷新 UI。什么时候折叠和展开然后它工作。以上是关于TreeNode - PrimeNG - 打字稿:如何从树中删除节点?的主要内容,如果未能解决你的问题,请参考以下文章