如何在标题上对表格排序(单击)?

时间:2019-02-28 17:38:36

标签: angular sorting click

排序元素时必须使用哪种逻辑?

在这里,我生成了所有的列和行。

dynamic-table.component.html

  <table>
    <tr>
      <th *ngFor="let col of columns" (click)="onClickSort()">{{col}}</th>
    </tr>
    <tr *ngFor="let user of users">
      <td *ngFor="let col of columns">{{user[col]}}</td>
    </tr>
  </table>

dynamic-table.component.ts

import {Component, Input, OnInit } from '@angular/core';

@Component({
  selector: 'app-dynamic-table',
  templateUrl: './dynamic-table.component.html',
  styleUrls: ['./dynamic-table.component.css']
})
export class DynamicTableComponent implements OnInit {
  @Input()
  users = [];
  @Input()
  columns: string[];
  constructor() {
  }
  onClickSort() {
    //ADD LOGIC SORT
  }
  ngOnInit() {
  }
}

我的数据在mock.ts中,我可以在服务中找到它们。

app.component.ts

import {Component, OnInit } from '@angular/core';
import {TableService} from './table.service';
@Component({
  selector: 'app-root',
  styleUrls: ['./app.component.css'],
  templateUrl: './app.component.html',
})
export class AppComponent implements OnInit {
  users;
  columns;
  constructor(private atService: TableService) {
  }
  ngOnInit(): void {
    this.columns = this.atService.getColumns();
    this.atService.getUsers().subscribe((res) => this.users = res);
  }
}

3 个答案:

答案 0 :(得分:1)

您可以编写一个pipe来接收数据,并以您喜欢的方式返回排序的数据。

<li *ngFor="let item of items | sortingPipe: filterarg">

myfilter管道将执行以下操作:

@Pipe({
  name: 'sortingPipe'
})
export class SortingPipe implements PipeTransform {

  transform(myArr, filterArg) {

    const sorted = myArr.sort((x, y) => {
      return x.duration - y.duration; // whatever you want to compare
    });
    return sorted.slice(0);

  }
}

答案 1 :(得分:0)

有一个很好的库

https://www.kryogenix.org/code/browser/sorttable/

它非常易于使用。

只需将脚本加载到html文件中,然后修改标头以将可排序(带有1的t)作为类添加,如下所示:

<script src="sorttable.js"></script>
 <table>
    <tr>
      <th *ngFor="let col of columns">{{col}}</th>
    </tr>
    <tr *ngFor="let user of users">
      <td *ngFor="let col of columns">{{user[col]}}</td>
    </tr>
  </table>

答案 2 :(得分:0)

我是ngx-datatable的狂热者-一个具有排序和搜索功能的漂亮表库。

sorting的示例只是向<ngx-datatable></<ngx-datatable>组件添加单个属性。