我在Angular 10中使用PrimeNG treeTable (p-treeTable
)和复选框选择器(p-treeTableCheckbox
),根据他们的例子向下滚动到复选框选择
在此实现中,如果用户展开节点并取消选择子项,则父节点也将取消选择。在我们的场景中,这是不希望看到的行为。我希望父节点保持选中,即使所有子节点都未选中。但是,如果用户选择/取消选择父节点,那么选择/取消选择所有子节点仍然是有效的。
例如,在他们的例子中,展开第一个节点"applications",展开下一个节点"angular"。然后取消选中像"mobile.app"=比;Angular和Applications的父级都不受检查。
那么,当子节点更改时,是否有可能使父节点保持不变?
我的表是:
<p-treeTable [value]="allUsers" selectionMode="checkbox" [(selection)]="selectedNodes">
<ng-template pTemplate="body" let-rowNode let-rowData="rowData">
<tr>
<td>
<div>
<p-treeTableToggler [rowNode]="rowNode" id="{{rowNode.node.Email}}">
</p-treeTableToggler>
<p-treeTableCheckbox [value]="rowNode"></p-treeTableCheckbox>
<span>{{rowNode.node.data.Name}}</span>
</div>
</td>
</tr>
</ng-template>
</p-treeTable>
在p-treeTableCheckbox
上似乎没有任何行为属性会影响这一点?
事实证明,有一个名为[propagateSelectionUp]="false"
的属性可以应用并完全按照我想要的方式工作....问题是它不存在于p-treeTable
组件上,只存在于p-tree
组件上。因此,解决方案是移动到p-tree
组件并实现[propagateSelectionUp]="false"
属性。
结果:
<p-tree [value]="allUsers" selectionMode="checkbox" [(selection)]="selectedNodes" [propagateSelectionUp]="false">
...