【发布时间】:2021-12-30 11:30:38
【问题描述】:
使用 Angular + Angular 材质 12
如果您想关闭 MatSidenav,那么我发现的几乎每个解决方案都说:
(click)="sidenav.close()" 在 html 组件中。
但我的注销功能需要(点击)(click)="onLogoutSideNav()"
onLogoutSideNav() {
this.authService.logout();
}
我需要从组件中的方法内部而不是从 html 中关闭 MatSidenav。我能找到的唯一解决方案是:
sidenav!: MatSidenav
...
onLogoutSideNav() {
this.authService.logout();
this.sidenav.close();
}
但是这样做会为 this.sidenav 返回 undefined。
使用@ViewChild 的解决方案有很多,但我没有将导航拆分为标题和侧边栏组件。我保持简单,在 app.component 中这样做。
<mat-list-item *ngIf="isAuth" routerLink="/"><button mat-icon-button><mat-icon>logout</mat-icon><span class="sidenav-span" (click)="onLogoutSideNav()">Logout</span></button></mat-list-item>
我在这里错过了什么?
【问题讨论】:
标签: javascript angular angular-material mat-sidenav