Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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 存在空字段时,不进行Ag网格排序_Angular_Ag Grid_Columnsorting - Fatal编程技术网

Angular 存在空字段时,不进行Ag网格排序

Angular 存在空字段时,不进行Ag网格排序,angular,ag-grid,columnsorting,Angular,Ag Grid,Columnsorting,我有一个包含10列的ag网格表,对于全局所有列,我启用如下排序 启用排序=“true” 在中,您可以向日期列传递自定义比较器,如下所示- { field: 'date', comparator: dateComparator, }, 并定义一个自定义比较器,以在最后一个 function dateComparator(date1, date2, nodeA, nodeB, isInverted) { if (date1 === null && dat

我有一个包含10列的ag网格表,对于全局所有列,我启用如下排序

启用排序=“true”


中,您可以向日期列传递自定义比较器,如下所示-

  {
    field: 'date',
    comparator: dateComparator,
  },
并定义一个自定义比较器,以在最后一个

function dateComparator(date1, date2, nodeA, nodeB, isInverted) {
  if (date1 === null && date2 === null) {
    return 0;
  }
  if (date1 === null) {
    return isInverted ? 1 : -1;
  }
  if (date2 === null) {
    return isInverted ? 1 : -1;
  }
  return date1 - date2;
}

如果您的日期作为日期传递给ag网格,则此操作应该有效。如果日期是以字符串形式传递的,则可以遵循此操作。

最后,我可以找到一种实现上述操作的方法。通过使用自定义比较器,下面是代码片段

dateComparator(date1, date2) {
  if(!date1){
    date1 = '04/23/2300';
  } else if(!date2){
    date2 = '05/23/2300';
  }
  if (date1 === undefined || date1 === null || date1.length !== 10) {
    return null;
  }
  else{
    var yearNumber = date1.substring(6, 10);
    var dayNumber  = date1.substring(3, 5);
    var  monthNumber = date1.substring(0, 2);
    var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;
    var date1Number = result;
  }
  if (date2 === undefined || date2 === null || date2.length !== 10) {
    return null;
  }
  else{
    var yearNumber2 = date2.substring(6, 10);
    var dayNumber2  = date2.substring(3, 5);
    var  monthNumber2 = date2.substring(0, 2);
    var result2 = yearNumber2 * 10000 + monthNumber2 * 100 + dayNumber2;
    var date2Number = result2;
  }
  // var date1Number = this.monthToComparable(date1);
  // var date2Number = this.monthToComparable(date2);
  if (date1Number === null && date2Number === null) {
    return null;
  }
  if (date1Number === null) {
    return -1;
  }
  if (date2Number === null) {
    return 1;
  }
  return Number(date1Number)- Number(date2Number);
}

是的,你是对的,我已经和ans一起重新发布了。在这里,我只是将空日期设置为随机的大日期。谢谢:-)