场景
嗨,我@circlon/angular-tree-component
在 Angular 中使用(我尝试了版本 10 和版本 11)并且我通过扩展它以异步方式加载每个节点的子节点(基本上我最初加载所有路由,而不是使用箭头扩展,一个节点,它将加载它的子节点,依此类推,直到我到达一个我无法展开的叶子,因为它的hasChildren
属性设置为false
)。
问题
问题是我在叶子节点和父节点上都使用了复选框,所以我为树的每个节点都有一个复选框。当我检查(所以我单击复选框)一个节点时,我希望触发该(select)
事件,但这仅在该节点没有任何子节点时才有效,因此如果它是一个叶子节点。在所有其他情况下,例如,如果我有一个已hasChildren=true
加载但未加载任何子节点的节点,我可以以图形方式查看复选框已选中但未触发选择事件,如果我手动展开节点直到达到至少1 个子节点,我可以选择父节点,所有子节点都将被选择,直到叶子/叶子。
预期的行为 我期望以下行为,但我不知道我是否可以拥有它:基本上我希望能够检查任何节点,如果节点有或没有任何子节点,则触发(选择)事件,我只需要获得所选 ID 的列表。可能吗?
这是我的树的 HTML:
<tree-root #tree
[focused]="true"
[nodes]="this.alberatura.treeNodes"
[options]="this.alberatura.options"
[(ngModel)]="this.selectedNode"
(moveNode)="this.alberatura.nodeMoved($event)"
(focus)="this.alberatura.selectNode($event)"
(dblclick)="openModalEditTree(editElementoTree, this.alberatura.selectedNode)"
(select)="this.alberatura.onSelect($event)"
(deselect)="this.alberatura.onDeselect($event)"
(loadNodeChildren)="true",
ngDefaultControl>
<ng-template let-node let-index="index">
<div>
<span>{{index + 1}} - {{ node.data.name }}</span>
</div>
</ng-template>
<ng-template #loadingTemplate>Loading, please hold....</ng-template>
</tree-root>
这些是我的选择:
this.alberatura.options = {
allowDrag: true,
allowDrop: true,
useCheckbox: true,
actionMapping: this.actionMapping
}