2016-12-19 14 views
7

Jaki jest najlepszy sposób, aby sort listę przedmiotów pochodzących z Observable i nadal być w stanie korzystać z async pipe? (Czytałem, że wytwarzania rury zwyczaj sortowania nie jest naprawdę skuteczny.) Chcę uniknąć subskrybowania i utrzymanie lokalnej kopii danych, a więc tylko za pomocą transmisji asynchronicznej rury ...Angular 2 - Sortuj listę z Observable

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

szablon:

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

Odpowiedz

11

Jeśli wywołasz .subscribe() otrzymasz Subscription, rura asynchroniczna oczekuje Observable.

Jeśli go zmienić na

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

można wykorzystać rurę asynchronicznej z test$

+0

Dzięki Günter za potwierdzenie, że mogę użyć operatora mapa obserwowalnym do sortowania, to doceniam. – Thibs