有人能帮助我吗?我试图动态设置Project Clarity数据网格组件中的选择。 https://vmware.github.io/clarity/documentation/v0.11/datagrid/selection 我有一个过滤器,我从存储中取出,我想在datagrid中显示选择。以下是填充所选变量的代码,该变量是字符串数组(string [])
selected: string[] = [];
我是控制台输出所选的,它包含正确的值,但这些值未在数据网格中选中。
private initView() {
Object.entries(this.metadataFilter.metadataTypes).forEach(
([key, value]) => {
this.selected.push(key);
});
console.log('this.selected: ', this.selected);
}
这就是我在模板中所拥有的:
<clr-datagrid [(clrDgSelected)]="selected">
以下是行的总数:
<clr-dg-row *clrDgItems="let meta of metadataTypes | async" (click)="getItemsForMetadataType(meta.name)" [clrDgItem]="meta">
<clr-dg-cell>{{ meta.name }}</clr-dg-cell>
</clr-dg-row>
当我从网格中选择条目时,它会起作用。那些我被填充到一个变量而不是其他方式。非常感谢帮助。我误解了这应该如何运作?
答案 0 :(得分:1)
这里有两件事要做。首先,我总是建议使用trackBy,以确保引用正确。其次,您需要将整个对象而不是密钥放入selected
数组中。数据网格的内部状态评估与对象引用的相等性,或者如果使用trackBy,它会在内部计算trackBy并评估引用之间的相等性(如ID或某个字符串)。
例如,这应该初始化要选择的第3个项目。
this.selected.push(this.metadataFilter.metadataTypes[2]);