项目清晰度datagrid动态选择

时间:2018-02-05 12:33:07

标签: vmware-clarity

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

当我从网格中选择条目时,它会起作用。那些我被填充到一个变量而不是其他方式。非常感谢帮助。我误解了这应该如何运作?

1 个答案:

答案 0 :(得分:1)

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

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

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