排序元素时必须使用哪种逻辑?
在这里,我生成了所有的列和行。
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);
}
}
答案 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>
组件添加单个属性。