我有一段打字稿代码,它正在调用Web服务,然后有选择地(基于类型)将接收到的菜单项追加到根菜单项的数组中:
private loadMenuItems() {
this.menuService.getAll().subscribe(menuItems => {
this.rootMenus.forEach(rootMenu => {
rootMenu.menus = menuItems
.filter(menuItem => menuItem.type === rootMenu.rootMenu.type)
.sort((a, b) => a.showOrder - b.showOrder);
this.menuItems.concat(rootMenu.menus);
}, this.errorCallback);
});
}
我不希望以这种方法订阅可观察对象,而是返回具有已成形数据的可观察对象。
我该怎么做?
答案 0 :(得分:0)
只需将其通过管道传递到map
(对于errorCallback,应通过catchError
)。假设您放错了errorCallback,这就是您要这样做的方式:
private loadMenuItems() {
return this.menuService.getAll().pipe(map(menuItems => {
this.rootMenus.forEach(rootMenu => {
rootMenu.menus = menuItems
.filter(menuItem => menuItem.type === rootMenu.rootMenu.type)
.sort((a, b) => a.showOrder - b.showOrder);
this.menuItems.concat(rootMenu.menus);
});
}), catchError(this.errorCallback));
}