【发布时间】:2021-12-18 02:11:16
【问题描述】:
我正在使用TypeScript 中的服务检索数据库数据,并在全局变量中分配数据,如下所示:
parentMenu: any[] = []; //Global var
LoadParentMenu() {
this.menuService.getParentMenu().subscribe(result => this.parentMenu = result); //Assigning value here
}
LoadChildMenu() {
console.log(this.parentMenu); //Willing to use the global variable in the second function
}
我知道,可以按如下方式调用第一个函数中的第二个函数,该函数运行良好但不符合我的目的:
LoadParentMenu() {
this.LoadChildMenu(result); //Passing data in the second function
}
但我的要求是从两个服务中获取数据,将它们绑定到一个全局数组变量,最后在另一种方法中使用它们(实际上是第三种方法)。我尝试按如下方式在控制台中返回 undefined:
parentMenu: any[] = []; //Global var 1
childMenu: any[] = []; //Global var 2
LoadParentMenu() {
this.menuService.getParentMenu().subscribe(result => this.parentMenu = result); //Assigning value here
}
LoadChildMenu() {
this.menuService.getParentMenu().subscribe(result => this.childMenu = result); //Assigning value here
}
LoadThirdFunc() {
console.log(this.parentMenu);
console.log(this.childMenu);
}
在第三个函数中,我需要通过以下两个全局变量进行更改:
const mergeById = (array1, array2) =>
array1.map(parent => ({
...parent,
childMenu: array2.filter((child) => child && (child.parentMenu === parent.menuNo))
.map(child => child && child.menuName)
}));
var result = mergeById(array1, array2)
.filter(x => x.childMenu && x.childMenu.length > 0);
有什么合适或简单的方法可以做到以上几点吗?
【问题讨论】:
标签: angular typescript angular8