有人能帮助我吗?我试图动态设置Project Clarity数据网格组件中的选择 . https://vmware.github.io/clarity/documentation/v0.11/datagrid/selection我有一个过滤器,我从存储中取出,我想在数据网格中显示选择 . 以下是填充所选变量的代码,该变量是字符串数组(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>
当我从网格中选择条目时,它可以工作 . 那些我被填充到一个变量而不是其他方式 . 非常感谢帮助 . 我误解了这应该如何运作?
1 回答
这里有两件事要做 . 首先,我总是建议使用trackBy,以确保引用正确 . 其次,您需要将整个对象(而不是密钥)放入
selected
数组中 . 数据网格的内部状态评估与对象引用的相等性,或者如果使用trackBy,它将在内部计算trackBy并评估引用之间的相等性(如ID或某个字符串) .例如,这应该初始化要选择的第3个项目 .
this.selected.push(this.metadataFilter.metadataTypes[2]);