【问题标题】:ngx treeview select all children under one parentngx treeview 选择一个父级下的所有子级
【发布时间】:2019-02-28 08:04:04
【问题描述】:

在我的 Angular 5 应用程序中,我在下拉菜单中使用 ngx treeview。我想添加一个图标来选择一个特定父母下的孩子。

<ngx-treeview [config]="config" (selectedChange)="selectItem()" [items]="Items"></ngx-treeview>

提前致谢

【问题讨论】:

  • 我们不是来为您编码的。向我们展示您的代码。然后我们可以帮助您找到解决方案。

标签: angular ngx-treeview


【解决方案1】:

在模板中你可以使用'itemTemplate'

<ngx-treeview [config]="config" (selectedChange)="selectItem()" [items]="Items" [itemTemplate]="itemTemplate">

在您的模板下方添加 ng-template

<ng-template #itemTemplate let-item="item" let-onCollapseExpand="onCollapseExpand" let-onCheckedChange="onCheckedChange">

<div class="form-inline row-item">

    <i *ngIf="item.children" (click)="onCollapseExpand()" aria-hidden="true" class="fa" [class.fa-caret-right]="item.collapsed" class.fa-caret-down]="!item.collapsed"></i>

    <div class="form-check">

        <input type="checkbox" class="form-check-input" [(ngModel)]="item.checked" (ngModelChange)="onCheckedChange()" [disabled]="item.disabled" [indeterminate]="item.indeterminate" />

        <label class="form-check-label" (click)="item.checked = !item.checked; onCheckedChange()"> {{item.title}} </label>

        <label class="form-check-label">

            <section *ngIf="item.children">
                <img class="icon icon-w tree-view-all" src="assets/img/checked.svg" *ngIf="item.checked && item.internalChecked" (click)="selectChildren(item)" />
                <img class="icon icon-w tree-view-all" src="assets/img/unchecked.svg" *ngIf="!item.checked || !item.internalChecked" (click)="selectChildren(item)" />
            </section>

        </label>

    </div>

</div>

在组件中使用递归函数

import { TreeviewComponent } from 'ngx-treeview';

...

@ViewChild(TreeviewComponent) treeviewComponent: TreeviewComponent;

...

selectChildren(i: TreeviewItem) {

    i.collapsed = false;

    if (i.children) {

        this.selectInsideChildren(i);

        i.checked = !i.checked;
    }

    this.treeviewComponent.raiseSelectedChange();

}



selectInsideChildren(item) {

    item.children.forEach(i => {

        i.checked = !i.checked;

        if (i.children) {

            this.selectInsideChildren(i);

        }

    });
}

【讨论】:

  • 感谢 Mayura,我在 ts 文件中找不到 selectChildren() 函数。
  • 在组件中使用递归函数
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2014-02-09
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
相关资源
最近更新 更多