0

我在我的一个组件的 p-dialog 中显示了一个 p-datatable。如果用户之前从该表中选择了几行,我需要在用户下次访问 p-dialog 时显示它们被选中。

我将一组选定项目传递给selectionp 数据表的属性。但是,这些行未在屏幕上显示为选中状态。

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

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

我该怎么做才能将选定的行绑定到 p 数据表。

<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那里的属性。那也没什么区别。

data但是,我注意到,如果我的方法中有并且selectedData已经可用,则问题不会出现ngOnInit

有任何想法吗 ?

4

1 回答 1

0

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

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

p-datatable 文档说它使用了地图比较,但不知何故不适用于我的情况。

于 2017-09-19T05:36:23.330 回答