使用NG6 Rxjs通过http返回一些数据。然后,我将返回的数据分为两个Observable。效果很好,但我需要首先按照嵌套数组中的值对数据进行排序。我可以在视图中触发事件后对数组进行排序,但是在页面加载时不起作用。
此代码按外部数组中的值排序:
return this.http
.get(this.apiUrl + 'PatchGroups/ForApp/' + appId)
.pipe(
map((data: Array<any>) => {
return {
ungrouped: data.filter(d => d.id < 0),
grouped: data.filter(d => d.id > 0).sort((a, b) => a.name < b.name ? -1 : 1)
};
}),
catchError(this.handleError)
);
尝试通过嵌套值对它进行排序,但效果不好:
return this.http
.get(this.apiUrl + 'PatchGroups/ForApp/' + appId)
.pipe(
map((data: Array<any>) => {
return {
ungrouped: data.sort((a, b) => a.server.name < b.server.name ? -1 : 1).filter(d => d.id < 0),
grouped: data.filter(d => d.id > 0).sort((a, b) => a.name < b.name ? -1 : 1)
};
}),
catchError(this.handleError)
);
对每个Observable进行排序似乎很脏。在传递给每个Observable之前我不能对数据进行排序吗?
来自我的组件:
this.appsApiService.getPatchGroups(appReconId)
.subscribe(pg => {
this.ungrouped_patchGroups = pg.ungrouped;
this.grouped_patchGroups = pg.grouped;
}
);