如何对作为Observable保存的列表进行排序(RxJS,Angular 2)

Gra*_* D. 3 observable rxjs angular

我是Angular2和RxJS的新手.

我已经建立了一个http服务,基本上给我一个'Observable'.

我将Observable保存在一个名为items的变量中 items : Observable.

我的模板(现在)只显示内容

<ul>
    <li *ngFor="#item in items | async>{{item.name}} | {{item.group}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这很好用.

我现在处于我想要对项目进行排序的位置 - 基于点击处理程序的名称或组.但是,我认为无法对Observable中保存的数组进行排序.

任何帮助表示赞赏.

谢谢.

Cal*_*den 11

我将假设您有另一个observable代表您要排序的当前属性:

const sortProperty$ = /* an observable of string values */
Run Code Online (Sandbox Code Playgroud)

您可以combineLatest在此流和items$流上执行a (因此我们获取最新的排序和列表值).然后我们可以使用此信息创建一个新的流,它将发出我们的排序列表:

const sortedItems$ = Rx.Observable.combineLatest(sortProperty$, items$, (prop, items) => {
    return _.orderBy(items, prop);
});
Run Code Online (Sandbox Code Playgroud)