收到数据

时间:2018-06-07 15:42:49

标签: angular typescript datatable primeng

我正在使用primeng数据表来预览数据。

我正在使用服务从json获取数据。

this.searchUserService.getResultART().then(data => {
  console.log(data); // data is OK
  for (let i = 0; i < data.length; i++) {
    this.usersList.push(new User(data[i]));
  }
  console.log("user list ", this.usersList); // list OK
});

在HTML中我创建了我的数据表

<p-dataTable [value]="usersList" selectionMode="single"  [(selection)]="selectedUser" dataKey="uid" (onRowSelect)="selectedUserDetails($event)" styleClass="tab-result"  >
  <p-column field="uid" header="UID" [sortable]="true"></p-column>
  <p-column field="firstName" header="First Name" [sortable]="true"></p-column>
  <p-column field="lastName" header="Last Name" [sortable]="true"></p-column>
  <p-column field="buildingAdress" header="Address" [sortable]="true"></p-column>
  <p-column field="profile" header="Role" [sortable]="true"></p-column>
</p-dataTable>

屏幕上显示的是空表,没有记录消息。

Console.log显示正确的数据,我不知道为什么表仍然是空的

1 个答案:

答案 0 :(得分:0)

我发现这种情况发生了很多,因为组件没有意识到输入已经改变,因为它没有,只有输入的属性有。

在回调中,尝试使用新映射的数据结果在现有数组上调用Array.concat()来创建新数组。这应该触发组件中的更改检测,因为现在传入输入的引用已更改。

this.searchUserService.getResultART().then(data =>
  this.usersList = this.usersList.concat(data.map(x => new User(x)));
);