首页 > 解决方案 > 以角度对树节点的子节点进行排序

问题描述

我有一个带有节点街道、城市、州、国家的角度树视图。

State 是 Country 的子节点,City 是 State 的子节点,依此类推。此外,每个节点都有自己的子节点。

例如:德国、法国、瑞典、挪威是国家节点中的值。点击德国将显示柏林、巴伐利亚、萨尔等州,进一步选择巴伐利亚将显示巴伐利亚的城市,然后选择城市将显示其街道。

但是,我无法对这些国家、州、城市和街道的列表进行排序。

该名称存储在一个名为 的变量中label。我正在使用以下内容对数组进行排序。:

  getNames(id: string): Observable<Name[]> {

return this.httpClient
  .get(
    this.environmentService.endpoints.<<--insert url here-->
  )
  .pipe(
    map((data: any) => {
      data.sort((a, b) => {
          return a.Name > b.Name ? 1 : -1

      })
      return data
    })
  ) as Observable<Name[]>
 }

我用了类似的树

它重新洗牌,但不按字母顺序排序。

有没有办法按字母顺序对我的对象进行排序?

PS:我想在服务中排序,然后发给组件

标签: angularsortingservicetreeviewcomponents

解决方案


你能展示更多关于你如何排序的代码吗?您不需要使用管道映射,因为数组具有自己的本机排序功能。

sortFn(myArray: Array<any>, label: string) {
   return myArray.sort((a, b) => {
    if (a[label] < b[label]) return -1;
    if (a[label] > b[label]) return 1;
    return 0;
  }
}

推荐阅读