【发布时间】:2023-04-04 18:36:02
【问题描述】:
我正在尝试在 ngFor 循环中对我的数据进行排序,但我的自定义管道无法按预期工作,任何人都可以帮助我...
export class OrderbyLastMessagePipe implements PipeTransform {
transform(array: Array<string>, args?: any): Array<string> {
if (array !== undefined && array !== null && args !== '') {
console.log('args', array);
const direction = args === 'desc' ? 1 : -1;
array.sort((a: any, b: any) => {
console.log('args', a);
if (a['lastUpdatedat'] < b['lastUpdatedat']) {
return -1 * direction;
} else if (a['lastUpdatedat'] > b['lastUpdatedat']) {
return 1 * direction;
} else {
return 0;
}
});
}
return array;
}
我的 Component ng 容器是这样的,我使用两个过滤器,一个用于搜索,另一个用于对特定 lastupdatedat 值(即时间戳)进行排序...
<ng-container *ngFor="let User of uLists | orderbyLastMessage:'uLists':true">
【问题讨论】:
-
@JBNizet 没有帮助...请指出我做错了什么...
-
请为 uLists 提供一些示例数据。快速说明:如果 uLIsts 是具有 lastUpdatedat 属性的对象列表,则您的管道可能不应该接受字符串数组。
-
明显的错误是您正在修改数组,而不是返回排序后的副本。但正如文章所解释的,您不应该有过滤器管道,也不应该有排序管道。如果您需要更多帮助,您需要明确定义“不起作用”。
标签: angular sorting angular2-custom-pipes