创建自定义复选框树视图组件 Angular

Posted

技术标签:

【中文标题】创建自定义复选框树视图组件 Angular【英文标题】:Create Custom Checkbox tree view component Angular 【发布时间】:2020-06-10 15:24:30 【问题描述】:

我想用复选框在 Angular 中创建树视图组件。 请在 -

找到我的代码

https://stackblitz.com/edit/angular-qvzr8c

在这里我可以在 UI 上渲染树视图。但是想实现功能-

    选中父复选框时,应自动选中其所有子复选框。 当检查所有子组中复选框时,父节点CheKbox应自动选择。 最后需要所有选中复选框的列表。

这里如何将模型设置为复选框并实现上述功能。​

【问题讨论】:

【参考方案1】:

请尝试使用this 插件。它会为你工作。

【讨论】:

【参考方案2】:

首先你需要为你的 TreeNode 添加一个新的可选属性

interface TreeNode 
    label: string;
    check?:boolean; //<--this one
    children: TreeNode[];
  

你可以在输入中使用[ngModel],和(ngModelChange)调用一个函数“selectNode”

 <label class="node__label">
        <input type="checkbox" [ngModel]="node.check" 
          (ngModelChange)="selectNode(node,$event)"/>
     node.label 
</label>

seletNode 是一个调用递归函数的函数:

  public selectNode( node: TreeNode,value:boolean ) : void 
        this.check(node,value)
  

  check(node:any,value:boolean)
  
    node.check=value;
    node.children.forEach(x=>
    
      this.check(x,value)
    )
  

你可以在这个stackblitz看到

但是您可以考虑@Dseroski 的建议,而不是重新发明***:)

【讨论】:

谢谢埃利塞奥。实际上,在这里我们想要创建完全自定义的树视图,没有其他插件可以使用。在这里,我还有一个问题,请建议 - 当孩子未被选中时,它的所有父母都会被取消选中。我该如何进行呢?请提出建议。【参考方案3】:

Angular Material 有一个非常好的 Tree 模块。除了选中一个框的一些逻辑更改之外,此示例与您需要的非常相似。

https://stackblitz.com/angular/baxxqmgxmgq?file=src%2Fapp%2Ftree-checklist-example.ts

【讨论】:

以上是关于创建自定义复选框树视图组件 Angular的主要内容,如果未能解决你的问题,请参考以下文章

当我取消选中自定义树视图中的子节点复选框时,如何取消选中所有父节点

如何更改树视图中复选框的默认图形大小?

Angular 反应式表单自定义验证器。仅在选中复选框时启用验证

如何使用 Angular 6 和 bootstrap 3.3.7 创建带有复选框列表的可折叠/可扩展/树结构

如何在android中使用复选框创建自定义日志列表

自定义 Bootstrap-Vue 复选框组件