0

有人可以帮帮我。我正在尝试在 Project Clarity 数据网格组件中动态设置选择。 https://vmware.github.io/clarity/documentation/v0.11/datagrid/selection 我有一个从存储中获取的过滤器,我想在数据网格中显示选择。这是填充选定变量的代码,它是字符串数组(字符串 [])

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>

当我从网格中选择条目时它可以工作。那些我被填充到一个变量而不是其他方式。帮助将不胜感激。我是否误解了这应该如何工作?

4

1 回答 1

1

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

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

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

于 2018-02-05T15:27:07.667 回答