【发布时间】:2017-04-01 13:10:26
【问题描述】:
我正在尝试在 Angular 2 中创建一个可折叠的手风琴菜单。目前我的代码允许子菜单使用 Angular 2 动画展开和缩回。问题是我需要在单击父级时展开某个子菜单。
我当前的设置如下所示:
<nav>
<ul>
<li>
<span (click)="toggleSubMenu()">
List Item 1
</span>
<ul [@subMenuToggle]="subMenuState" class="sub-menu">
<li><a href="#">New</a></li>
<li><a href="#">Edit</a></li>
<li><a href="#">Remove</a></li>
</ul>
</li>
<li>
<span (click)="toggleSubMenu()">
List Item 2
</span>
<ul [@subMenuToggle]="subMenuState" class="sub-menu">
<li><a href="#">New</a></li>
<li><a href="#">Edit</a></li>
<li><a href="#">Remove</a></li>
</ul>
</li>
</ul>
</nav>
现在,当我单击其中一个主菜单项(列表项 1 或 2)时,两个子菜单都会展开。 (我只希望相应的子子菜单展开)
我当前的动画触发器如下所示:
trigger('subMenuToggle',[
state('subMenuSelected', style({opacity: '1', height: '*'})),
state('subMenuDeselected', style({opacity: '0', height: '0px', overflow: 'hidden'})),
transition('subMenuSelected <=> subMenuDeselected', [
animate('150ms ease-out')
])
])
toggleSubMenu() 方法改变状态:
export class NavSidebarComponent {
subMenuState: string = 'subMenuDeselected';
toggleSubMenu() {
this.subMenuState = (this.subMenuState === 'subMenuSelected' ? 'subMenuDeselected' : 'subMenuSelected');
}
}
有没有什么好的方法可以使用toggleSubMenu()方法判断点击了哪个菜单项,然后展开对应的子菜单?还是我必须为每个父菜单项分别创建一个切换方法?
谢谢
【问题讨论】:
标签: html css angular typescript menu