web-dev-qa-db-fra.com

Angular 2 - Trier la liste depuis Observable

Quelle est la meilleure façon de sort une liste d'éléments provenant d'un Observable et de toujours pouvoir utiliser le async pipe? (J'ai lu que la création d'un canal de tri personnalisé n'est pas vraiment efficace.) Je veux éviter de m'abonner et de conserver une copie locale des données et donc d'utiliser simplement un canal asynchrone ...

//can I use map here and filter items right in the observable and get rid of subscribe?

this.test$ = Observable.of(['one', 'two', 'three'])
    .subscribe((data) => {
        data.sort((a, b) => {
            return a < b ? -1 : 1;
         });
        this.data = data;
     });

modèle:

<div *ngFor='let item of data'>
<!-- want to be able to use async pipe here -->
17
Thibs

Si vous appelez .subscribe() vous obtenez un Subscription, le canal asynchrone attend un Observable.

Si vous le changez en

this.test$ = Observable.of(['one', 'two', 'three'])
.map((data) => {
    data.sort((a, b) => {
        return a < b ? -1 : 1;
     });
    return data;
 });

vous pouvez utiliser le canal asynchrone avec test$

23
Günter Zöchbauer