Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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
Angular OrderBy日期管道在角度?_Angular_Angular6_Angular8 - Fatal编程技术网

Angular OrderBy日期管道在角度?

Angular OrderBy日期管道在角度?,angular,angular6,angular8,Angular,Angular6,Angular8,我有一个按日期属性按数组排序的管道 问题是不是每个元素在args.key中都有属性日期。所以列表的底部应该有行 import { Pipe, PipeTransform } from "@angular/core"; @Pipe({ name: 'sort' }) export class ArraySortPipe implements PipeTransform { transform(records: Array < any > , args ? : {

我有一个按日期属性按数组排序的管道

问题是不是每个元素在
args.key
中都有属性日期。所以列表的底部应该有行

import {
  Pipe,
  PipeTransform
} from "@angular/core";

@Pipe({
  name: 'sort'
})
export class ArraySortPipe implements PipeTransform {
  transform(records: Array < any > , args ? : {
    key: string,
    direction: boolean,
    type: "int" | "string" | "date"
  }): any {
    return records.sort(function (a: any, b: any) {
      if (args.type === 'date' && args.direction) {
        return new Date(a[args.key]).getTime() - new Date(b[args.key]).getTime();
      }
    });
  };
}
导入{
管
管道变换
}从“@角度/核心”;
@烟斗({
名称:“排序”
})
导出类ArraySortPipe实现PipeTransform{
转换(记录:数组,args?:{
键:字符串,
方向:布尔,
键入:“int”|“string”|“date”
}):任何{
返回记录。排序(函数(a:any,b:any){
if(args.type==='date'&&args.direction){
返回新日期(a[args.key]).getTime()-新日期(b[args.key]).getTime();
}
});
};
}

如何将不带日期的属性移动到列表底部?

您可以为排序函数添加另一个返回值:如果
a
没有日期,则返回-1。如果
b
没有日期,则返回1

比如:

转换(记录:数组,args?:{
键:字符串,
方向:布尔,
键入:“int”|“string”|“date”
}):任何{
返回记录。排序(函数(a:any,b:any){
if(args.type==='date'&&args.direction){
如果(!a[args.key]){
返回-1;
}
如果(!b[args.key]){
返回1;
}
返回新日期(a[args.key]).getTime()-新日期(b[args.key]).getTime();
}
});
};

(方向未实现)。

它总是给我不同的结果。你能把它和示例数据一起放在stackblitz上吗?
  transform(records: Array < any > , args ? : {
    key: string,
    direction: boolean,
    type: "int" | "string" | "date"
  }): any {
    return records.sort(function (a: any, b: any) {
      if (args.type === 'date' && args.direction) {
          if(!a[args.key]) {
              return -1;
          }

          if(!b[args.key]) {
              return 1;
          }

          return new Date(a[args.key]).getTime() - new Date(b[args.key]).getTime();
      }
    });
  };