angular5 - 角度 5 ,按升序/降序排序

标签 angular5 angularjs-orderby

是否可以选择在 orderBy 管道中更改按 asc/desc 排序?

数组:

this.testArr = [{name: 'bbb', id: '1'}, {name: 'ccc', id: '2'}, {name: 'aaa', id: '0'}];

在 HTML 中:

<ul><li *ngFor="let item of testArr | orderBy: 'id' : true"><div>{{item.id}}</div></li></ul>

将“true”替换为“false”/“asc”/“desc”不起作用。 所需的输出应为:0, 1, 2,另一个参数为:2, 1, 0。

谢谢。

最佳答案

由于性能和缩小问题,角度指南建议不要使用管道 - https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe

首选方法是在组件中具有过滤/排序方法

sortAccounts(prop: string) {
    const sorted = this.accounts.sort((a, b) => a[prop] > b[prop] ? 1 : a[prop] === b[prop] ? 0 : -1);
    // asc/desc
    if (prop.charAt(0) === '-') { sorted.reverse(); }
    return sorted;
}

然后在组件 View 中

<li *ngFor="let a of sortAccounts('id')">

<li *ngFor="let a of sortAccounts('-id')">

关于angular5 - 角度 5 ,按升序/降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49476564/

相关文章:

javascript - 线性模式在具有单独组件的 mat-h​​orizo​​ntal-stepper 中不起作用

angularjs - 当我格式化 html 中的内容时,orderBy 不起作用

javascript - Angular 重复顺序不适用于嵌套范围

angular - null 在 Angular 5 HTTP get 请求中被转换为 "null"

angular - index.html 中的条件视口(viewport)元标记

javascript - 如何解决错误组件不是任何 NgModule 的一部分或在 Angular 6 中未正确导入?

angular - 从 Angular 5 组件中读取 TypeDecorator

AngularJS - 无法使用 ngRepeat orderBy 对 DateTime 进行排序

javascript - AngularJS orderBy 不支持自定义函数

angularjs - Angular 中具有未定义值的自定义过滤器