0
jsonからサービス経由でロードされるmenuItemsとsubmenuItemsのリストがあります。ルートの変更時に、正しいmenuItemを開くために親メニューのルックアップが行われます。これは、ObservableのmenuItemのリストを使用して行います。次のようにObservable findメソッドが動作しない
MenuItemクラスは、次のよう
export class MenuItem {
code: string;
name: string;
routerLink: boolean;
submenu: boolean;
url: string;
submenuItems: SubMenuItem[];
}
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));
}
subscribeメソッドのmenuItemは常に未定義です。
私が間違っていることに関する手掛かりはありますか?
'find'を削除するとどうなりますか?正しくメニュー項目を記録しますか? – olsn
はい、menuItemが正しく挿入されています – Ronny176