primeng:数据表未异步绑定选择 属性

primeng : Datatable not binding selection property asychronously

我在我的一个组件的 p-dialog 中显示 p-datatable。如果用户之前 selected 了此 table 中的几行,我需要在用户下次访问 p-dialog 时显示它们 selected。

我正在将一组 selected 项目传递给 p-datatable 的 selection 属性。但是,这些行未显示在屏幕上 select。

如果我重新 select 相同的行,我会在 selection 属性 中得到它们两次,这意味着预先 selected 的行正确地保留在selection 属性 但不知何故未绑定到 html.

我试图将整个 p-dialog 包装在一个 *ngIf 中,希望它仅在收到数据后创建,但没有任何区别。

如何才能将 selected 行绑定到 p-datatable。

<div *ngIf="data && data.length" class="col-sm-12">
    <p-dataTable #ListRef [value]="data" rowHover="true" [multiSortMeta]="multiSortMeta" (onRowSelect)="onSelect($event)" [(selection)]="selectedData" (onRowUnselect)="onUnSelect($event)">
      <p-column  field="launchDate" header="Launch Date" [sortable]="true"></p-column>
      <p-column  field="endDate" header="End Date" [sortable]="true"></p-column>
    </p-dataTable>
  </div>

我也尝试过使用 ViewChild 获取引用并将值分配给那里的 selection 属性。那也没有区别。

但是我注意到,如果我的 ngOnInit 方法中已经有 dataselectedData,问题就不会出现。

有什么想法吗?

虽然我一开始没注意到,但后来我发现有一个属性 dataKey可以赋值用于比较所选行与总行数。这对我有用。唯一的变化是分配一个字段名称以唯一匹配行

<p-dataTable #fundListRef [value]="data" rowHover="true" [(selection)]="selectedData" (onRowSelect)="onFundSelect($event)" (onRowUnselect)="onFundUnSelect($event)"
         dataKey="id">

p-datatable 文档说它使用了地图比较,这在某种程度上不适用于我的情况。