Angular 角度2&;RxJS-从2个源进行排序

Angular 角度2&;RxJS-从2个源进行排序,angular,rxjs5,Angular,Rxjs5,我有一个对象列表,这些对象是通过一个可观察对象从服务器返回的。该列表显示在带有ngFor的模板中。我还有一个下拉列表来对列表进行排序 当服务器返回列表时,排序工作正常,但现在我尝试在选择组合框时对列表进行排序 如何对下拉列表和源中的流进行排序,而不必使用局部变量来存储数据 示例代码: let sortButton$ = new Subject(); let sortProp = 'myProperty'; this.handleSortButton(sortProp) { sortBu

我有一个对象列表,这些对象是通过一个可观察对象从服务器返回的。该列表显示在带有ngFor的模板中。我还有一个下拉列表来对列表进行排序

当服务器返回列表时,排序工作正常,但现在我尝试在选择组合框时对列表进行排序

如何对下拉列表和源中的流进行排序,而不必使用局部变量来存储数据

示例代码:

let sortButton$ = new Subject();
let sortProp = 'myProperty';

this.handleSortButton(sortProp) {
    sortButton$.next(sortProp);
}

// how can I retain my Observable and sort the values from the server when 
// a) the values come back from server (works with below)
// b) the sort dropdown sends a new property value via the subject
this.test$ = Observable
                .of(['one', 'two', 'three'])
                .map((data) => _.sortBy(data,this.sortProp));
模板:

<div *ngFor='let item of test$'>

您可以使用:

this.test$=可观察
.共(['1','2','3'])
.CombineTest(this.sortButton$.startWith(this.sortProp))
.map(([data,sort])=>u.sortBy(data,sort))
别忘了导入它:

导入'rxjs/add/observable/combineLatest';
导入'rxjs/add/operator/startWith';
您可以使用:

this.test$=可观察
.共(['1','2','3'])
.CombineTest(this.sortButton$.startWith(this.sortProp))
.map(([data,sort])=>u.sortBy(data,sort))
别忘了导入它:

导入'rxjs/add/observable/combineLatest';
导入'rxjs/add/operator/startWith';