我想按属性名称排序我的结果,但以下给了我一个错误:
*ngFor="let s of rslt| order by:wind_park">
Run Code Online (Sandbox Code Playgroud)
我从后端得到的:
data = [
{ turbine_name: "Baynne ", wind_park: "Bayone" },
{ turbine_name: "Salstiegl ", wind_park: "Salzst" },
{ turbine_name: "Chradurga - SLL2", wind_park: "Chiarga" },
{ turbine_name: "Moilishte ", wind_park: "Mogihte" },
{ turbine_name: "Mogshte ", wind_park: "Mogshte" }
]
Run Code Online (Sandbox Code Playgroud)
我如何订购它以及最佳做法是什么?谢谢大家。
你需要创建你自己的 OrderBy 管道来满足你的需求,lodash是一个很酷的库,它有一堆现成的函数可以做到这一点orderBy。
import { Pipe, PipeTransform } from "@angular/core";
import { orderBy } from 'lodash';
@Pipe({
name: "orderBy"
})
export class OrderByPipe implements PipeTransform {
transform(array: any, sortBy: string, order?: string): any[] {
const sortOrder = order ? order : 'asc'; // setting default ascending order
return orderBy(array, [sortBy], [sortOrder]);
}
}
Run Code Online (Sandbox Code Playgroud)
在模板中的使用
<div *ngFor="let w of data | orderBy: 'wind_park'">{{ w.wind_park}}</div> //default will sort ascending
Run Code Online (Sandbox Code Playgroud)
用于下降通过管道中的 desc
<div *ngFor="let w of data | orderBy: 'wind_park': 'desc'">{{ w.wind_park}}</div>
Run Code Online (Sandbox Code Playgroud)
确保在模块中声明管道
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ OrderByPipe ], // declare pipe here
bootstrap: [ AppComponent ]
})
Run Code Online (Sandbox Code Playgroud)
工作演示
| 归档时间: |
|
| 查看次数: |
3285 次 |
| 最近记录: |