我研究过高级树视图:
经过一些更改后,我尝试限制选择数量。但是,我遇到了几个问题。我可以限制我的选择,但是当超过限制时我不能取消选中复选框。
这是我的工作:
<div class="container-fluid d-flex flex-column">
<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)="onCheckedChange();selectItem(item)">
{{item.text}} {{item.checked}}
</label>
</div>
</div>
</ng-template>
<div class="row d-flex flex-grow-1 of-auto">
<div class="col-3 d-flex flex-column">
<div class="form-group">
<ngx-treeview [config]="config" [items]="items" [itemTemplate]="itemTemplate"
(selectedChange)="onSelectedChange($event)">
</ngx-treeview>
</div>
</div>
</div>
</div>
这是组成部分:
onSelectedChange(downlineItems: DownlineTreeviewItem[]) {
this.selectedItems = [];
downlineItems.forEach(downlineItem => {
const item = downlineItem.item;
this.selectedItems.push(item.value);
this.selectItem(item);
});
}
selectItem(item) {
if (this.selectedItems.length > 2) {
this.selectedItems.pop();
item.checked = false;
}
}
我检查了 html 部分中的真/假值,它工作正常。仍然选中复选框。我还需要一些父母选择方面的帮助。当超过选择限制时,父选择变为真,直到选择了该父项的其中一个子项。
你对这个问题有什么解决方案吗?