我有一个sidenav和一个嵌套的工具栏
toolbar.html
toolbar.html
<md-sidenav-container fullscreen> <md-sidenav #sidenav mode="side" color="primary"> <md-toolbar color="primary"><span>Sidenav</span></md-toolbar> <button md-button class="sidenav-link" (click)="sidenav.close()"> <md-icon>home</md-icon><span class="title"> HOME</span> </button> <button md-button class="sidenav-link" (click)="sidenav.close()"> <md-icon>home</md-icon><span class="title"> HOME</span> </button> </md-sidenav> <app-toolbar [sidenav]="sidenav"></app-toolbar> </md-sidenav-container>
sidenav.html
<md-toolbar color="primary"> <button md-button class="toolbar-menu-button" (click)="sidenav.toggle(); isCollapsed = !isCollapsed"> <md-icon [@iconChange]="isCollapsed">menu</md-icon> </button> <span class="toolbar-spacer"></span> <button md-button class="toolbar-link" >DASHBOARD</button> <span class="toolbar-spacer"></span> </md-toolbar>
https://plnkr.co/edit/up19ZNJyMt6uatqdI9uv?p=preview
我想关闭sidenav到导航抽屉之类的主页图标
关闭sidenav
这个问题有点不寻常.由于工具栏中的按钮控制打开和关闭状态,因此每次单击按钮时,我都必须添加一个EventListener以传递sidenav的状态.
原文链接:https://www.f2er.com/angularjs/240517.html基于事件标志,我添加了一些将保持sidenav宽度的ngStyle.请注意,sidenav现在总是打开[add property opened =“true”],因为它始终可见.我还最终使用工具栏中的发射标志来用于’Sidenav’标题.如果需要显示部分“Sid”,可以将其删除.
此外,由于sidenav始终打开,我添加了自定义css来设置宽度变化的动画.
toolbar.component.ts:
export class ToolbarComponent implements OnInit { shortnav = true; @Input() sidenav; @Output() change: EventEmitter<booelan> = new EventEmitter<boolean>(); constructor() { console.log(this.sidenav); } ngOnInit() { } toggle(){ this.shortnav = !this.shortnav; console.log("shortnav: " + this.shortnav) this.change.emit(this.shortnav); } }
toolbar.component.html:
<button md-button class="toolbar-menu-button" (click)="toggle(); isCollapsed = !isCollapsed">
sidenav.component.ts:
export class SidenavOverviewExample { showSidenavTitle = false; sidenavWidth = 2.75; changeWidth(showShortNav){ if(showShortNav){ this.sidenavWidth = 2.5; this.showSidenavTitle = false; } else{ this.sidenavWidth = 13; this.showSidenavTitle = true; } } }
sidenav.component.html:
<md-sidenav-container fullscreen> <md-sidenav #sidenav mode="side" color="primary" opened="true" [ngStyle]="{ 'width.em': sidenavWidth }" class="animate-sidenav"> <md-toolbar color="primary"> <span *ngIf="showSidenavTitle">Sidenav</span> </md-toolbar> <button md-button class="sidenav-link" (click)="sidenav.close()"> <md-icon>home</md-icon><span class="title"> HOME</span> </button> <button md-button class="sidenav-link" (click)="sidenav.close()"> <md-icon>home</md-icon><span class="title"> HOME</span> </button> </md-sidenav> <app-toolbar [sidenav]="sidenav" (change)="changeWidth($event)"></app-toolbar> </md-sidenav-container>
sidenav.component.css:
.mat-sidenav-transition .mat-sidenav{ /* custom animation to grow and shrink width */ -webkit-transition: width .3s !important; /* For Safari 3.1 to 6.0 */ transition: width .3s !important; }
希望这可以帮助你:)