首页 文章

项目清晰度datagrid动态选择

提问于
浏览
0

有人能帮助我吗?我试图动态设置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 回答

  • 1

    这里有两件事要做 . 首先,我总是建议使用trackBy,以确保引用正确 . 其次,您需要将整个对象(而不是密钥)放入 selected 数组中 . 数据网格的内部状态评估与对象引用的相等性,或者如果使用trackBy,它将在内部计算trackBy并评估引用之间的相等性(如ID或某个字符串) .

    例如,这应该初始化要选择的第3个项目 .

    this.selected.push(this.metadataFilter.metadataTypes[2]);

相关问题