首页 > 解决方案 > clr-tree-node 选择不影响折叠的子节点

问题描述

我已经构建了一个基于 Clarity (v 0.13.1) 树视图的组件,

我在选择\取消选择折叠的父节点时遇到问题,它不会影响子节点的选择,当我扩展他时,他又被选中\取消选择。

有人可以帮忙吗?

下面是视图:

<clr-tree-node class="tree-root" [(clrSelected)]="tree.selected" id="statusTreeFilter">
{{tree.name}}
<ng-template [(clrIfExpanded)]="tree.expanded">
  <clr-tree-node *ngFor="let group of tree.childs" [(clrSelected)]="group.selected">
    <span>{{group.name}}</span>
    <ng-template [(clrIfExpanded)]="group.expanded">
      <clr-tree-node *ngFor="let status of group.childs" [(clrSelected)]="status.enable">
        <span>{{status.name}}</span>
        <ng-template></ng-template>
      </clr-tree-node>
    </ng-template>
  </clr-tree-node>
</ng-template>

和数据:

let tree = {
"name": "All",
"selected": true,
"expanded": false,
"childs": [
  {
    "name": "Generate",
    "selected": true,
    "expanded": false,
    "childs": [
      {
        "name": "Init",
        "enable": true
      },
      {
        "name": "Generating",
        "enable": true
      },
      {
        "name": "Generated",
        "enable": true
      }
    ]
  },
  {
    "name": "Printing",
    "selected": true,
    "expanded": false,
    "childs": [
      {
        "name": "Printing",
        "enable": true
      }
    ]
  },
  {
    "name": "Finalized",
    "selected": true,
    "expanded": false,
    "childs": [
      {
        "name": "Completed",
        "enable": true
      },
      {
        "name": "Cancelled",
        "enable": true
      }
    ]
  }
]

}

标签: vmware-clarityclarity

解决方案


您的根节点需要指向对象的布尔selected属性selection。您正在将 clrSelected 绑定设置为整个对象,这会导致此行为。

<clr-tree-node class="tree-root" [(clrSelected)]="selection.selected" id="statusTreeFilter">

在这里它已完全设置。https://stackblitz.com/edit/clarity-hmrndh?file=app%2Fapp.component.html


推荐阅读