Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 7中对数据进行排序_Angular_Sorting_Multilingual_Translate - Fatal编程技术网

在angular 7中对数据进行排序

在angular 7中对数据进行排序,angular,sorting,multilingual,translate,Angular,Sorting,Multilingual,Translate,我需要按角度对标签进行排序。我正在从component.ts文件中执行此操作。分拣工作正常。它指定标签的键值进行排序。但我的应用程序是用两种语言编写的。所以,当我切换到另一种语言时,使用key进行排序是不起作用的。有什么方法可以用任何语言对它进行排序吗 getlabel(Id: string): Observable<Dto[]> { return this.httpClient .get( url ) .pipe( map((data: any) =&g

我需要按角度对标签进行排序。我正在从component.ts文件中执行此操作。分拣工作正常。它指定标签的键值进行排序。但我的应用程序是用两种语言编写的。所以,当我切换到另一种语言时,使用key进行排序是不起作用的。有什么方法可以用任何语言对它进行排序吗

getlabel(Id: string): Observable<Dto[]> {
return this.httpClient
  .get(
    url
  )
  .pipe(
    map((data: any) => {
      data.sort((a, b) => {
        return a.label > b.label ? 1 : -1
      })
      return data
    })

  ) as Observable
}
getlabel(Id:string):可观察{
返回此.httpClient
.得到(
网址
)
.烟斗(
地图(数据:任意)=>{
数据排序((a,b)=>{
返回a.label>b.label?1:-1
})
返回数据
})
)可见的
}
使用功能:

.pipe(
    map((data: any) => {
      return data.sort((a, b) => {
        return a.label.localeCompare(b.label, 'he');
      })
    })
  ) as Observable
“he”是希伯来语,改成你的


这适用于不同语言的排序

.pipe(
    map((data: any) => {
      data.sort((a, b) => {
        return this.translate
          .instant(a.label)
          .localeCompare(this.translate.instant(b.label))
      })
      return data
    })
  ) as Observable
传递存在于输入数组中的键。
函数sortByKey(数组:[],键:any,sortType=''){
如果(!array.length){
返回数组;
}
返回数组.sort((a,b)=>{
如果(sortType==='desc'){
如果(b[key]a[key]){返回1;}
}否则{
如果(a[key]b[key]){返回1;}
}
返回0;
});
}

<代码>请考虑提供一个可能的情况。通过这种方式,志愿者很可能会帮助你。这是希伯来语。我有两种语言:英语和法语。你知道每次的显示语言是什么吗?你写“当我切换到另一种语言时”,当你切换语言时,将它保存在一个局部变量中,并将其传递给localeCompare funcok。我知道如何使用locale compare对这两种语言进行排序,但在我重新加载页面之前,排序不会发生变化。假设它是英语,它会排序,然后当我点击法语时,它会一直保持英语排序,直到我重新加载页面。我想我只能使用语言更改,但我可以在服务中使用它吗
function sortByKey(array: [], key: any, sortType = '') {
  if (!array.length) {
     return array;
  }

   return array.sort((a, b) => {
     if (sortType === 'desc') {
          if (b[key] < a[key]) { return -1; }
          if (b[key] > a[key]) { return 1; }
      } else {
          if (a[key] < b[key]) { return -1; }
          if (a[key] > b[key]) { return 1; }
      }

      return 0;
  });
}