如何使用Angular Material2创建嵌套的折叠菜单?
发布时间:2020-12-17 07:11:09 所属栏目:安全 来源:网络整理
导读:我正在寻找Angular Material2中对侧栏内嵌套菜单的支持.顶级通常默认关闭,打开顶级会暴露嵌套的菜单项. 我认为这是一个有意义的起点,但子导航项在父项之外渲染(很差): plnkr md-sidenav-container class="my-container" md-sidenav #sidenav class="my-side
我正在寻找Angular Material2中对侧栏内嵌套菜单的支持.顶级通常默认关闭,打开顶级会暴露嵌套的菜单项.
我认为这是一个有意义的起点,但子导航项在父项之外渲染(很差): plnkr <md-sidenav-container class="my-container"> <md-sidenav #sidenav class="my-sidenav"> <md-list> <md-list-item> <h3 md-line> First Parent </h3> <md-nav-list> <a md-list-item href="#">First Child</a> <a md-list-item href="#">Second Child</a> <a md-list-item href="#">Third Child</a> </md-nav-list> </md-list-item> <md-list-item> <h3 md-line> Second Parent </h3> <md-nav-list> <a md-list-item href="#">First Child</a> <a md-list-item href="#">Second Child</a> </md-nav-list> </md-list-item> </md-list> </md-sidenav> <div class="my-container"> <button md-button (click)="sidenav.open()">Open</button> </div> </md-sidenav-container> 有人用@ angular / material创建了这种侧边栏菜单吗? 解决方法
我知道这是一个老问题,但对于其他人来到这个页面寻找同样的事情,就像我一样,这是我如何用当前版本的Angular Material(6.4.6)处理它并且一旦你得到了CSS风格做得恰到好处,效果很好.
请注意,此功能仍然没有官方支持,您必须自己设置,这可以通过多种方式完成,但我选择仅使用Angular Material组件. 这是带有一些注释的示例标记,使用导航链接的对象: <mat-sidenav-container> <mat-sidenav #sidenav class="sidenav" [mode]="mobileQuery.matches ? 'over' : 'side'" [opened]="mobileQuery.matches ? false : true"> <mat-nav-list> <!-- wrap all the nav items in an accordion panel --> <mat-accordion [displayMode]="flat"> <div *ngFor="let navItem of navList"> <!-- use a simple div for an item that has no children,match up the styling to the expansion panel styles --> <div class="nav-head" *ngIf="navItem.pages.length === 0"> <a class="nav-link" [routerLink]="navItem.link" routerLinkActive="selected" (click)="closeSidenav()"> <mat-icon>{{navItem.icon}}</mat-icon> <span class="nav-link-text">{{navItem.heading}}</span> </a> </div> <!-- use expansion panel for heading item with sub page links --> <mat-expansion-panel *ngIf="navItem.pages.length > 0" class="mat-elevation-z0"> <mat-expansion-panel-header class="nav-head" [expandedHeight]="'48px'"> <mat-panel-title class="nav-link"> <mat-icon>{{navItem.icon}}</mat-icon> <span class="nav-link-text">{{navItem.heading}}</span> </mat-panel-title> </mat-expansion-panel-header> <div class="nav-section"> <!-- loop through all your sub pages inside the expansion panel content --> <div *ngFor="let navPage of navItem.pages" class="nav-item"> <a class="nav-link" [routerLink]="navPage.link" routerLinkActive="selected" (click)="closeSidenav()">{{navPage.title}}</a> </div> </div> </mat-expansion-panel> </div> </mat-accordion> </mat-nav-list> </mat-sidenav> <mat-sidenav-content> <div class="container-fluid"> <router-outlet></router-outlet> </div> </mat-sidenav-content> </mat-sidenav-container> 编辑:为了回答一些其他问题,mobileQuery来自Angular Material CDK,它增加了一些助手来检测组件内的移动断点.见:Angular Material CDK Layout 此外,除了从服务中提取正确的导航对象之外,我的组件文件在这种情况下确实没有做任何事情,但这里是我如何设置对象的一个??例子(当然它们可以是你需要它们的任何东西成为) [ { heading: 'Dashboard',icon: 'dashboard',link: '/dashboard',pages: [] },{ heading: 'Main Heading',icon: 'settings',link: '/settings',pages: [ { title: 'Subpage',link: '/settings/advanced',icon: '' } ] } ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |