我的垫子桌子是按大写字母排序的,我该如何固定角度呢?

时间:2019-01-15 12:17:02

标签: angular typescript

我正在尝试使用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)">

1 个答案:

答案 0 :(得分:0)

首先使名称大写(或小写),然后进行比较。然后这种差异将消失。

 return this.compare(a.nome.toUpperCase(), b.nome.toUpperCase(), isAsc);