angular - 在 Angular 中创建动态级联菜单
问题描述
我创建了一个具有三个级别的动态菜单
我希望此菜单以级联方式工作,但不幸的是,当我单击菜单时,所有菜单都会打开。此外,当我单击菜单时,所有级别都会一起打开
请帮帮我
showitems=false;
fullMenu = [
{name:"Home",childs:[
{name:"HomeLevel-1",childs:[
{name:"Home-level-2"}
]}
]},
{ name:"about",},
{name:"register",childs:[
{name:"registerLevel-1",childs:[
{name:"registerLevel-2"}
]}
]},
]
constructor() { }
ngOnInit() {
}
showSubMenu(){
let menu = this.fullMenu;
menu.forEach(data => {
if (data.childs) {
this.showitems = !this.showitems;
}
});
}
<ul>
<li class="item" (click)="showSubMenu()" *ngFor="let menu of fullMenu" >
{{ menu.name }}
<ul *ngIf="menu.childs ? showitems : '' ">
<li class="item" *ngFor="let submenu of menu.childs">
{{ submenu.name }}
<ul *ngIf="submenu.childs">
<li class="item" *ngFor="let submenu_2 of submenu.childs">
{{ submenu_2.name }}
</li>
</ul>
</li>
</ul>
</li>
</ul>
解决方案
我也在尝试做同样的事情并面临一些问题,尽管在 Stackoverflow 的帮助下我找到了答案。请检查这是否对您有帮助。这是一种可重用的组件
https://stackblitz.com/edit/angular-v6zee7
这仍然有一些我需要修复的css问题。
推荐阅读
- c# - 如何使用 Net Topology Suite 在 Entity Framework Core 中将点(地理)缓冲 1 米
- php - 返回所有整数除数或返回字符串 '(integer) is prime' 如果它是素数的函数
- javascript - 当 0 为 false ReactJS 时如何设置此输入值
- amazon-web-services - 我应该使用什么服务器地址(mosquitto 代理 url)将 node-red 连接到 mosquitto?
- reactjs - 当尝试使用 fetch 在 Cypress IO (JS) 中针对 React 应用程序存根请求时,请求仍会调用服务器
- mongodb - 在mongodb中获取最大_id
- arrays - 在数组结构内调用 init
- django - 如何通过模型显示来自多对多的字段值
- python - 从文件读取时删除格式
- sql - 何时将 JOIN 操作从数据库层移动到服务层?