Javascript 按日期排序角度2管道
这是我的密码:Javascript 按日期排序角度2管道,javascript,angular,Javascript,Angular,这是我的密码: <div *ngFor="let conv of lender.conversation | orderBy" class="conv-single"> {{conv.date | date: 'dd/MM/yyyy | j'}} - {{conv.text}} </div> 这是我的订购管道: @Pipe({ name: 'orderBy' }) export class OrderByPipe implements PipeTransf
<div *ngFor="let conv of lender.conversation | orderBy" class="conv-single">
{{conv.date | date: 'dd/MM/yyyy | j'}} - {{conv.text}}
</div>
这是我的订购管道:
@Pipe({
name: 'orderBy'
})
export class OrderByPipe implements PipeTransform {
transform(value: any, args?: any): any {
let newVal = value.sort((a: any, b: any) => {
let date1 = new Date(a.date);
let date2 = new Date(b.date);
if (date1 > date2) {
return 1;
} else if (date1 < date2) {
return -1;
} else {
return 0;
}
});
return newVal;
}
}
@管道({
名称:'orderBy'
})
导出类OrderByPipe实现PipeTransform{
转换(值:any,args?:any):any{
让newVal=value.sort((a:any,b:any)=>{
let date1=新日期(a.日期);
let Date 2=新日期(b.日期);
如果(日期1>日期2){
返回1;
}否则如果(日期1<日期2){
返回-1;
}否则{
返回0;
}
});
返回newVal;
}
}
问题是我总是以相同的顺序获取元素。有人知道问题出在哪里吗?根据角度文档,强烈建议不要使用此类管道。 看 您可以尝试以下方法:
[{
date: somedate,
text: "text1"
}
...]
ngOnInit() {
this.sortedItems = items.sort((a: any, b: any) =>
new Date(a.date).getTime() - new Date(b.date).getTime()
);
}
排序列表.pipe.ts
产品列表.component.html
/*
升序:创建日期
降序排列:-创建\u日期
*/
管道的顺序似乎正确:因此,既然如此,为什么您希望元素更改其顺序?我希望,您是在比较毫秒格式的日期,而不是日期格式的日期。虽然这样做有效,但强烈建议您不要使用此格式。每次使用时,强烈建议您不要使用此功能。\
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortList'
})
export class SortListPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (typeof args[0] === "undefined") {
return value;
}
let direction = args[0][0];
let column = args.replace('-','');
value.sort((a: any, b: any) => {
let left = Number(new Date(a[column]));
let right = Number(new Date(b[column]));
return (direction === "-") ? right - left : left - right;
});
return value;
}
}
/*
Ascending Order: create_date
Descending Order: -create_date
*/
<ul>
<li *ngFor="let item of productList | sortList : '-create_date'>
</ul>
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortByDate'
})
export class SortByDatePipe implements PipeTransform {
transform(value: any, args?: any): any {
const sortedValues = value.sort((a, b) => new Date(b.createdOn).getTime() - new Date(a.createdOn).getTime());
return sortedValues;
}
}