У меня есть угловое приложение, над которым я работаю.Моя проблема заключается в следующем: у меня есть боковое меню навигации с возможностью поиска внутри меню.это JSON для меню:
menuItems: [
{
name: "Dashboard",
iconPath: "Dash@board.png",
routingPath: "",
children: [
{
name: "Version 1",
iconPath: "",
routingPath: "",
children: [
{
name: "Version 1.1 abc",
iconPath: "",
routingPath: "",
children: [
{
name: "Version 1.1.1 ccc",
iconPath: "",
routingPath: "",
children: [
{
name: "Version 1.1.1.1 hello",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 1.1.2.1",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 1.1.3.1 sdfsdf",
iconPath: "",
routingPath: "",
children: []
}
]
},
{
name: "Version 1.1.2",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 1.1.3",
iconPath: "",
routingPath: "",
children: []
}
]
},
{
name: "Version 1.2",
iconPath: "",
routingPath: "",
children: []
}
]
},
{
name: "Version 2",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 3",
iconPath: "",
routingPath: "",
children: [
{
name: "Version 3.1",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 3.2",
iconPath: "",
routingPath: "",
children: []
},
{
name: "Version 3.3",
iconPath: "",
routingPath: "",
children: []
}
]
}
]
},
{
name: "Pages",
iconPath: "Pa@ges.png",
routingPath: "",
children: [
{
name: "ZZZ Page 1",
iconPath: "",
routingPath: "",
children: []
}
]
},]
это пример для меню.я пытаюсь добиться этого: если кто-то ищет привет, мне нужно отобразить это (я отображаю только имя, но мне нужны все данные внутри объекта):
![enter image description here](https://i.stack.imgur.com/41chQ.jpg)
Но это не работает.Я пробовал этот код:
private performFiltering() {
const searchValue: string = this.searchBarInput.nativeElement.value.toLowerCase();
if (searchValue.length > 0) {
this.filteredMenu.menuItems = this.fullMenu.menuItems.filter((item) => {
return this.recursiveSearchInMenu(item, searchValue);
});
}}
private recursiveSearchInMenu(menu: MenuItemModel, searchValue) {
let found = menu.children.find((item) => item.name.toLowerCase().includes(searchValue));
if (!found) {
let i = 0;
while (!found && i < menu.children.length) {
if (menu.children[i].children && menu.children[i].children.length) {
found = this.recursiveSearchInMenu(menu.children[i], searchValue);
}
i++;
}
}
return found;
}
Это мой результат: ![enter image description here](https://i.stack.imgur.com/qaTKr.jpg)
есть идеи, как это сделать?