angular2 table 自动排序sortable

import {NgbPaginationConfig} from "@ng-bootstrap/ng-bootstrap";
import {Input,Component} from "@angular/core";
@Component({
    selector: 'table-sortable',templateUrl: './table-sortable.html',providers: [
        NgbPaginationConfig
    ]
})
export class TableSortable {

    @Input() columns: any[];
    @Input() data: any[];
    @Input() sort: any;
    page:number = 1;
    pageSize:number = 10;

    constructor(config: NgbPaginationConfig) {
        // customize default values of paginations used by this component tree
        config.size = 'sm';
        config.boundaryLinks = true;
        config.pageSize = this.pageSize;
    }

    selectedClass(columnName): any {
        return columnName == this.sort.column ? 'sort-' + this.sort.descending : false;
    }

    changeSorting(columnName): void {
        var sort = this.sort;
        if (sort.column == columnName) {
            sort.descending = !sort.descending;
        } else {
            sort.column = columnName;
            sort.descending = false;
        }
    }

    convertSorting(): string {
        return this.sort.descending ? '-' + this.sort.column : this.sort.column;
    }
}
<table class="table table-hover table-striped table-sortable">
    <thead>
    <tr>
        <th *ngFor="let column of columns" [class]="selectedClass(column.variable)" (click)="changeSorting(column.variable)">
            {{column.display}}
        </th>
    </tr>
    </thead>
    <tbody>
    <tr *ngFor="let object of data | orderBy : convertSorting() | paging: page: pageSize">
        <td *ngFor="let column of columns">
            {{object[column.variable] | format : column.filter}}
        </td>
    </tr>
    </tbody>
</table>
<div class="row">
    <div class="col-xs-3">
        共{{data.length ? data.length : 0}}条数据  当前第{{page}}页
    </div>
    <div class="col-xs-9">
        <ngb-pagination [collectionSize]="data.length" [(page)]="page"></ngb-pagination>
    </div>
</div>

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...