我使用angular-tree-component生成带有复选框选项的树。 HTML
<tree-root [nodes]="nodes" [options]="options">
</tree-root>
打字稿:
import { ITreeOptions } from 'angular-tree-component';
import { Component } from '@angular/core';
export class myComponent {
nodes = [
{
name: 'root1',
children: [
{ name: 'root1_child1' },
{
name: 'root1_child2', children: [
{ name: 'grand_child1' },
{ name: 'grand_child2' }
]
}
]
},
{
name: 'root2',
children: [
{ name: 'root2_child1' },
{
name: 'root2_child2', children: [
{ name: 'grand_child1' },
{ name: 'grand_child2' }
]
}
]
}
];
options: ITreeOptions = {
useCheckbox: true
};
optionsDisabled: ITreeOptions = {
useCheckbox: true,
useTriState: false
};
答案 0 :(得分:3)
您可以使用“event.treeModel.selectedLeafNodeIds”在树中获取所选节点,
示例:
<tree-root [nodes]="treeNode" (select)="onSelect($event)"
(deselect)="onDeselect($event)" [options]="options"></tree-root>
this.selectedTreeList = Object.entries(event.treeModel.selectedLeafNodeIds)
.filter(([key, value]) => {
return (value === true);
}).map((node) => node[0]);
答案 1 :(得分:1)
参考上述答案以获取可以使用的对象
Object.entries(this.treeModel.selectedLeafNodeIds)
.filter(([key, value]) => {
return (value === true);
})
.map((id) => {
let node = this.treeModel.getNodeById(id[0]);
return node;
});
答案 2 :(得分:0)
您可以通过使用(选择)和(取消选择)事件来执行此操作。 这是一个小例子。
onSelect(event) {
try {
let pushdata: any = [];
pushdata.push(event.node.data);
console.log(this.TreeViewData);
} catch (e) {
console.log(e.message)
}
}
与取消选择相同,即使您可以捕获取消选择的节点
ondeSelect(event) {
try {
let pushdata: any = [];
pushdata.push(event.node.data);
console.log(this.TreeViewData);
} catch (e) {
console.log(e.message)
}
}
Event.node.data将返回所有绑定属性的数组列表。