【问题标题】:primeng : Datatable not binding selection property asychronouslyprimeng :数据表不异步绑定选择属性
【发布时间】:2017-09-19 13:36:23
【问题描述】:

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

我将一组选定项目传递给 p 数据表的 selection 属性。但是,屏幕上未显示选中的行。

如果我重新选择相同的行,我会在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 属性。那也没什么区别。

然而,我注意到如果我的 ngOnInit 方法中已经有 dataselectedData 可用,则问题不会出现。

有什么想法吗?

【问题讨论】:

  • 如何将一组选定项目传递给选择属性“selectedData”?分配后视图可能不会刷新。我建议尝试使用扩展运算符而不是推送。
  • 我只是将数组分配给selection 属性。

标签: angular datatable primeng primeng-datatable


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多