【发布时间】:2017-01-27 15:23:54
【问题描述】:
我有一个菜单项列表和可能的子菜单项,它们是通过服务从 json 加载的。在路线更改时,会查找父菜单以打开正确的 menuItem。我使用一个可观察的菜单项列表来做到这一点。
MenuItem 类如下:
export class MenuItem {
code: string;
name: string;
routerLink: boolean;
submenu: boolean;
url: string;
submenuItems: SubMenuItem[];
}
子菜单项如下:
export class SubMenuItem {
name: string;
url: string;
routerLink: boolean;
}
要找到正确的 menuItem 使用以下方法:
private findParentMenuToExpand(url:String): Observable<MenuItem> {
console.log("inside findParentMenuToExpand");
return this.menuItems$
.find((menuItem: MenuItem) => {
if (menuItem.submenu === true) {
for (let subMenuItem of menuItem.submenuItems) {
if (subMenuItem.url === url) {
return true;
}
}
}
});
}
该方法调用如下:
if(this.selectedSubMenuUrl != null) {
var parentMenuItem: Observable<MenuItem> = this.findParentMenuToExpand(this.selectedSubMenuUrl);
parentMenuItem.subscribe((menuItem: MenuItem) => console.log(menuItem));
}
但订阅方法中的 menuItem 始终未定义。
关于我做错了什么的任何线索?
【问题讨论】:
-
当您删除
find时会发生什么 - 它会正确记录 MenuItems 吗? -
是的,menuItems 已正确插入
标签: angular typescript rxjs