基本信息
官网
https://akveo.github.io/ng2-smart-table/
github
https://github.com/akveo/ng2-smart-table
examples
https://github.com/akveo/ng2-smart-table/tree/master/projects/demo/src/app/pages
基本用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| @Component({ selector: 'ngx-data', template: `<ng2-smart-table [settings]="settings" [source]="source">`, }) export class DataComponent { option:any; settings = { pager: { display: true, perPage: 50 }, actions: { add: false, edit: false, delete: false, }, hideSubHeader: true, columns: { col1: { title: '值', type: 'string', }, col2: { title: '更新时间', type: 'string', }, }, }; source: LocalDataSource; }
|
分页器
1 2 3 4
| pager:{ display: true , perPage: 50 }
|
后端分页
后端分页可以继承LocalDataSource
,写一个新的DataSource
,重写getElements()
和count()
函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| export class MyDataSource extends LocalDataSource { all: number; devName: string; namFilter:string; constructor(private api: MyService) { super() }
count(): number { return this.all; }
getElements(): Promise<any> { return this.api.getData(nameFilter).pipe(map(result=>{ this.all = result.count; return result.data; })).toPromise(); } }
|
使用方式
1 2 3 4 5 6 7
| source:MyDataSource = new DeviceDataSource(this.api);
search(name:string){ this.source.nameFilter = name; this.source.setPage(1); this.source.refresh(); }
|
自定义渲染
方案1
1 2 3 4 5 6
| columns: { col1: { title: '链接', type: 'html', }, }
|
直接修改值为html代码
方案2 自定义渲染器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import {Component, Input, OnInit} from "@angular/core"; import {ViewCell} from "ng2-smart-table";
@Component({ template: ` <button (click)="onClick()">{{renderValue}}</button> `, }) export class CustomRender implements ViewCell, OnInit { renderValue: string;
@Input() value: string | number; @Input() rowData: any;
ngOnInit() { this.renderValue = value; }
onClick(){ console.log(rowData); } }
|
1 2 3 4 5 6 7
| columns: { col1: { title: '链接', type: 'custom', renderComponent: CustomRender }, }
|