按角度对树节点的子节点进行排序

时间:2019-02-20 19:02:25

标签: angular sorting service treeview components

我有一个角度树视图,其中包含街道,城市,州,国家/地区。

州是Country的子节点,城市是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[]>
 }

我用类似的树

它会改组,但不会按字母顺序排序。

有没有一种方法可以按字母顺序对我的对象进行排序?

P.S:我想在使用中对其进行排序,然后将其发送到组件

1 个答案:

答案 0 :(得分:0)

能否显示更多有关排序方式的代码?您不必使用管道映射,因为数组具有其自身的本机排序功能。

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;
  }
}