我正在尝试使用mat-sort按角度对一个mat-table排序,问题是当我按升序/递减顺序排序时,算法顺序首先将单词大写而不是将其大写。如果我有一张这样的桌子:
“标记” “安东尼”
“标记”显示优先于无聊。
这是算法:
sortData(sort: Sort) {
const data = this.descricoesProdutos.slice();
if (!sort.active || sort.direction === '') {
this.sortedData = data;
return;
}
this.sortedData = data.sort((a, b) => {
const isAsc = sort.direction === 'asc';
switch (sort.active) {
case 'nome': return this.compare(a.nome, b.nome, isAsc);
case 'descricao': return this.compare(a.descricao, b.descricao, isAsc);
default: return 0;
}
});
}
compare(a: number | string, b: number | string, isAsc: boolean) {
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
}
我的html:
<table matSort (matSortChange)="sortData($event)">
答案 0 :(得分:0)
首先使名称大写(或小写),然后进行比较。然后这种差异将消失。
return this.compare(a.nome.toUpperCase(), b.nome.toUpperCase(), isAsc);