web-dev-qa-db-fra.com

Comment trier un <Item []> observable dans Angular 6 avec rxjs 6?

Je veux juste trier les données sur un observable de mon type de classe "Catégorie". Si observable <catégorie []> je veux trier.

J'ai donc mis à niveau vers Angular6 et rxjs6 avec. Un problème qui est probablement simple TypeScript que je connais est de savoir comment puis-je simplement effectuer une opération de "tri" comme:

sort((x,y) => x.description < y.description ? -1 : 1)

À l'intérieur du nouvel Angular6? Je faisais ça en 5

var response = this.http.get<Category[]>(this.endpoint);
        .map((result: Response) => this.alphabetize(result));


alphabetize = (result: Response) => this.Categories = result.json()
.sort((x,y) => x.description < y.description ? -1 : 1)

Et cela a bien fonctionné. Maintenant dans le HttpCLIENTModule et HttpClient que Angular veut que vous l'utilisiez est plus simple:

var data = this.http.get<Category[]>(this.endpoint);

Je mets juste la magie <(objet)> avant mon point final et il le fait pour moi. Cool. Mais je ne vois pas comment on pénètre facilement dans l'objet pour en faire le tri avec Source, Pipe, from, of. Je sais que c'est probablement quelque chose de simple dont je ne connais pas la syntaxe.

10
djangojazz

C'est:

this.http.get<Category[]>(this.endpoint).pipe(
  map(results => results.sort(...))
);

Ou puisque sort modifie un tableau existant, il est plus sémantiquement correct de fournir des effets secondaires dans do/tap:

this.http.get<Category[]>(this.endpoint).pipe(
  tap(results => {
    results.sort()
  })
);
11
Estus Flask