2

场景 嗨,我@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
}
4

0 回答 0