Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按日期排序角度2管道_Javascript_Angular - Fatal编程技术网

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;
      }
    }