根据字段值降序排序列表

Sort List Descending Based on a Field Value

我需要对 Firebase 集合中基于值的字段列表进行排序。这个字段叫做"rankeamento",它的最大值是10,最小值是0。列表中必须先引入值最大的项,以此类推。 (此列表将以幻灯片的形式附上)。

我研究了一个管道,但仍然没有成功

HTML =>

<ion-slides>
        <ion-slide *ngFor="let produto of produtos">
          <ion-card>
            <ion-card-header>
              <ion-card-title>{{ produto.nome }}</ion-card-title>
            </ion-card-header>

            <ion-card-content>
              <ion-avatar slot="start">
                <ion-img [src]="produto.caminho_imagem"></ion-img>
              </ion-avatar>
            </ion-card-content>

            <div class="ion-text-center ion-padding-bottom ion-padding-top">
              <ion-checkbox></ion-checkbox>
            </div>
          </ion-card>
        </ion-slide>
      </ion-slides>

TS =>

public produtos: any[] = [];

ngOnInit() {

    this._firestoreService.getCollection('produto')
      .pipe(takeUntil(this._unsubscribeAll))
      .subscribe(produtos => {
        // FIELD PRODUTO.RANKEAMENTO \
        this.produtos = produtos;
        this.loading = false;
      });

    this.modoUso.valueChanges
      .pipe(takeUntil(this._unsubscribeAll))
      .subscribe(value => this.onChangeModoUso.emit(value));

  }

Angular 不再提供任何用于排序的管道(例如 orderBy 管道)。您可以通过 here.

阅读更多相关信息

但是,您可以选择在 subscribe() 块返回可观察值后对列表进行排序,方法是使用 JavaScript 的 Array.sort()

this._firestoreService.getCollection('produto')
  .pipe(takeUntil(this._unsubscribeAll))
  .subscribe(produtos => {
    // FIELD PRODUTO.RANKEAMENTO \
    this.produtos = produtos.sort((a, b) => b.rankeamento - a.rankeamento);
    this.loading = false;
  });