Angular ngx-datatable 没有刷新
Angular ngx-datatable not refreshing
我试过下面的代码,一切似乎都很好(没有收到任何错误,甚至数据来自 api 调用)但最后我得到一个空的 table.
*reloadTable*
是调用API的函数。
来自 API 调用的数据:
空 table :
@Component({
selector: 'app-my-component',
template: `
<ngx-datatable
class="bootstrap table table-striped"
[rows]="rows"
[columns]="columns"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'"
[externalPaging]="true"
[externalSorting]="true"
[count]="page.count"
[offset]="page.offset"
[limit]="page.limit"
[sortType]="'single'"
(page)="pageCallback($event)"
(sort)="sortCallback($event)"
></ngx-datatable>
`
})
export class NGXServerSide implements OnInit {
rows: Object[]=[];
columns = [
{ name: 'EmployeeID' },
{ name: 'Name' },
{ name: 'City' },
{ name: 'Department' },
{ name: 'Gender' },
];
constructor(private httpClient: HttpClient, private _employeeService: EmployeeService) { }
ngOnInit() {
this.pageCallback({ offset: 1 });
}
pageCallback(pageInfo: { count?: number, pageSize?: number, limit?: number, offset?: number }) {
this.page.offset = pageInfo.offset;
this.reloadTable();
}
reloadTable() {
const params = this.addTableParams();// params for api input
this._employeeService.getSortedPagedResults(params).subscribe((res: Response) => {
for (var i in res)
this.rows.push([res[i]]);
this.page.count=1;
});
}
}
仔细查看了你的问题,我明白了问题所在。您正在将数据传递到数据表,但未显示。有两个问题:
数据表不知道要绑定到什么。在 NGXServerSide class 中,您只需为列命名。给列一个 属性 像这样绑定:
columns = [{ name: 'EmployeeID', prop: 'EmployeeID' }]
您传入的对象与列名不匹配。在屏幕截图中我可以看到 EmployeeId: '1'
,但您的专栏期待 EmployeeID
我在下面包含了来自 ngx-datatable API 文档的 link,其中包含一些您可以使用的附加列属性。
ngx-datatable column properties
我试过下面的代码,一切似乎都很好(没有收到任何错误,甚至数据来自 api 调用)但最后我得到一个空的 table.
*reloadTable*
是调用API的函数。
来自 API 调用的数据:
空 table :
@Component({
selector: 'app-my-component',
template: `
<ngx-datatable
class="bootstrap table table-striped"
[rows]="rows"
[columns]="columns"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'"
[externalPaging]="true"
[externalSorting]="true"
[count]="page.count"
[offset]="page.offset"
[limit]="page.limit"
[sortType]="'single'"
(page)="pageCallback($event)"
(sort)="sortCallback($event)"
></ngx-datatable>
`
})
export class NGXServerSide implements OnInit {
rows: Object[]=[];
columns = [
{ name: 'EmployeeID' },
{ name: 'Name' },
{ name: 'City' },
{ name: 'Department' },
{ name: 'Gender' },
];
constructor(private httpClient: HttpClient, private _employeeService: EmployeeService) { }
ngOnInit() {
this.pageCallback({ offset: 1 });
}
pageCallback(pageInfo: { count?: number, pageSize?: number, limit?: number, offset?: number }) {
this.page.offset = pageInfo.offset;
this.reloadTable();
}
reloadTable() {
const params = this.addTableParams();// params for api input
this._employeeService.getSortedPagedResults(params).subscribe((res: Response) => {
for (var i in res)
this.rows.push([res[i]]);
this.page.count=1;
});
}
}
仔细查看了你的问题,我明白了问题所在。您正在将数据传递到数据表,但未显示。有两个问题:
数据表不知道要绑定到什么。在 NGXServerSide class 中,您只需为列命名。给列一个 属性 像这样绑定:
columns = [{ name: 'EmployeeID', prop: 'EmployeeID' }]
您传入的对象与列名不匹配。在屏幕截图中我可以看到
EmployeeId: '1'
,但您的专栏期待EmployeeID
我在下面包含了来自 ngx-datatable API 文档的 link,其中包含一些您可以使用的附加列属性。 ngx-datatable column properties