Sorting ag栅格角度自定义排序参数显示为未定义

Sorting ag栅格角度自定义排序参数显示为未定义,sorting,ag-grid,Sorting,Ag Grid,我已将以下比较器设置为columnDef 。。。 比较器:(date1:string,date2:string):number=>this.dateComparator(date1,date2), ... 还有一个自定义函数,可以按如下日期对字符串进行排序 dateComparator(date1:string,date2:string):数字{ 常数d1=新日期(日期1); const d2=新日期(日期2); //自定义逻辑和返回。。 } 但是,date1和date2参数是未定义的。有人

我已将以下比较器设置为
columnDef

。。。
比较器:(date1:string,date2:string):number=>this.dateComparator(date1,date2),
...
还有一个自定义函数,可以按如下日期对字符串进行排序

dateComparator(date1:string,date2:string):数字{
常数d1=新日期(日期1);
const d2=新日期(日期2);
//自定义逻辑和返回。。
}

但是,
date1
date2
参数是
未定义的
。有人能帮我一下吗。

我写了同样的比较器

export function dateComparator(date1: string, date2: string) {
    const date1Number = date1 ? new Date(date1).getTime() : null;
    const date2Number = date2 ? new Date(date2).getTime() : null;

    if (date1Number === null && date2Number === null) {
        return 0;
    }
    if (date1Number === null) {
        return -1;
    }
    if (date2Number === null) {
        return 1;
    }
    return date1Number - date2Number;
}
但如果您在某些情况下更改单元格的值(从日期更改为字符串-就像我的情况一样,如果日期为null,我将显示“从未记录”,然后我们应该将其替换)-并且只显示一个字符串,您可以使用下一个比较器:

export function dateComparator(date1: string, date2: string) {
    const neverLog = 'Never Logged';

    const date1Number = date1 === neverLog ? null : new Date(date1).getTime();
    const date2Number = date2 === neverLog ? null : new Date(date2).getTime();
    if (date1Number === null && date2Number === null) {
        return 0;
    }
    if (date1Number === null) {
        return -1;
    }
    if (date2Number === null) {
        return 1;
    }
    return date1Number - date2Number; }

如果不确定在比较器中传递的日期值是否为有效字符串,则可以先检查它并在比较之前对其进行清理

function dateComparator(date1, date2) {
  var date1Number = validateDateinput(date1);
  var date2Number = validateDateinput(date2);
  if (date1Number === null && date2Number === null) {
    return 0;
  }
  if (date1Number === null) {
    return -1;
  }
  if (date2Number === null) {
    return 1;
  }
//custom logic and return..
  return date1Number - date2Number;
}

function validateDateinput(date) {
  // handle null and undefined values. add more logic here as per use case
  if (date === undefined || date === null) {
    return null;
  }
  //string is valid to create date
  return new Date(date);
}


comparator
的参数如下:comparator(valueA、valueB、nodeA、nodeB、isInverted)。是否有可能对该列使用自定义渲染器或格式化程序函数?那么您可能希望使用nodeA和nodeB参数,而不是valueA或valueB。请在plunker或codesandbox上添加更多代码或理想情况下添加完整的托管代码。@MattNienow,感谢您提供的线索。文档有点混乱。但根本的问题是,我有一个自定义的渲染器,它导致了问题,通过添加
valueGetter