Angular 数字和文本列的Mat排序问题

Angular 数字和文本列的Mat排序问题,angular,angular-material,angular-material-5,angular-cdk,Angular,Angular Material,Angular Material 5,Angular Cdk,我有角材料数据源。角度材质版本为^5.0.3正在进行排序。但是,对于某些列,排序不正确。这里有数字和文字。例如,排序结果如“XXX”、“1”、“1testxt”、“1”、“OPD”、“OXD”、“12” 模型 {{element.model} 感谢您的帮助。这是因为标准的sortingDataAccessor将数字字符串强制转换为数字,并且在Javascript1>中的“一”和1都计算为false 作为一种解决方法,您可以定义自己的sortingDataAccessor,而无需强制转换: n

我有角材料数据源。角度材质版本为^5.0.3正在进行排序。但是,对于某些列,排序不正确。这里有数字和文字。例如,排序结果如“XXX”、“1”、“1testxt”、“1”、“OPD”、“OXD”、“12”


模型
{{element.model}

感谢您的帮助。

这是因为标准的
sortingDataAccessor
将数字字符串强制转换为数字,并且在Javascript
1>中的“一”和
1
都计算为
false

作为一种解决方法,您可以定义自己的
sortingDataAccessor
,而无需强制转换:

ngAfterViewInit(){
this.dataSource.sort=this.sort;
this.dataSource.sortingDataAccessor=(数据,属性)=>data[属性];
}

此解决方法是从中复制的。

您需要去掉那些不是数字的字符,并将包含数字字符的字符串转换为数字类型值

您的初始列值:“ID0239”。 去掉字符后:“0239”。 将字符串转换为数字后:0239

0239是需要在sortingDataAccessor函数中返回的值