我已经创建了一个管道来对数组进行排序,但是当我使用管道对它进行排序时说错误:
错误:未捕获(在承诺中):TypeError:无法读取属性' sort'未定义的。
pipe.ts
import { Component, NgModule, Pipe, PipeTransform } from '@angular/core';
@Pipe({name: "sortBy"})
export class SortPipe {
transform(array: Array<string>, args: string): Array<string> {
array.sort((a: any, b: any) => {
if (a[args] < b[args]) {
return -1;
} else if (a[args] > b[args]) {
return 1;
} else {
return 0;
}
});
return array;
}
}
我已将SortPipe
包含在@NgModule的声明和提供程序中。
pipe.html
<ion-item item-detail *ngFor="let exhibit of exhibits | sortBy : 'name'
let i = index" name="exhibit">
<h2>{{ exhibit?.name }}</h2>
<h5>{{ exhibit.plan }}</h5>
<h5>{{ exhibit.link }}</h5>
<h5>{{ exhibit.stall }}</h5>
<h5>{{ exhibit.description }}</h5>
</ion-item>
答案 0 :(得分:8)
尝试将管道代码包装在if语句中,该语句检查以确定数组是否未定义,如下所示:
import { Component, NgModule, Pipe,PipeTransform } from '@angular/core';
@Pipe({ name: "sortBy" })
export class SortPipe {
transform(array: Array<string>, args: string): Array<string> {
if (array !== undefined) {
array.sort((a: any, b: any) => {
if ( a[args] < b[args] ){
return -1;
} else if ( a[args] > b[args] ) {
return 1;
} else {
return 0;
}
});
}
return array;
}