javascript - 订阅 Angular Material Mat-Drawer 事件 .. 例如:openedChange
问题描述
我正在使用 mat-drawer 并且我希望在关联的组件中收到通知,当 mat-drawer 打开和关闭时添加一些逻辑;
html具有以下结构:
<mat-drawer-container class="example-container" autosize>
<mat-drawer #drawer class="custom-sidenav" mode="side">
<div>
<button routerLink="/" routerLinkActive="active"
style="margin-top: 50px" mat-button class="small" (click)="showFiller = !showFiller" >
<mat-icon style="color: red">home</mat-icon>
<b style="margin-left: 20px">Home</b>
</button>
</div>
<div>
<button routerLink="/transactions" routerLinkActive="active" style="margin-top: 20px" mat-button class="small" (click)="showFiller = !showFiller" >
<mat-icon style="color:gray">trending_flat</mat-icon>
<b matBadge="{{totalTransactions}}" matBadgeColor="red" matBadgeOverlap="false" style="margin-left: 20px">Transactions</b>
</button>
</div>
<div *ngIf="isAdmin">
<button routerLink="/fetch-data" routerLinkActive="active" style="margin-top: 20px" mat-button class="small" (click)="showFiller = !showFiller" >
<mat-icon matBadge="{{totalCertificates}}" matBadgePosition="before" matBadgeColor="accent" style="color:gray">description</mat-icon>
<b style="margin-left: 20px">Certificates</b>
</button>
</div>
<div>
<button (click)="navigateToMyCertificates()" routerLinkActive="active" style="margin-top: 20px" mat-button class="small" (click)="showFiller = !showFiller" >
<mat-icon matBadge="{{myCertificates}}" matBadgePosition="before" matBadgeColor="accent" style="color:gray">description</mat-icon>
<b style="margin-left: 20px">My Certificates</b>
</button>
</div>
<div>
<button routerLink="/certificate-validator" routerLinkActive="active" style="margin-top: 20px" mat-button class="small" (click)="showFiller = !showFiller" >
<mat-icon style="color:black">check</mat-icon>
<b style="margin-left: 20px">Validate Certificate</b>
</button>
</div>
</mat-drawer>
这是相关的组件类:
export class HomeLayoutComponent {
..etc
}
需要在 mat-drawer 和组件中添加什么代码以实现正确的绑定,该绑定将触发 Component 类中的“openedChange”事件
谢谢 !
解决方案
有两种方法可以做到这一点。你可以做
<mat-drawer #drawer (openedChange)="onOpenedChange($event)"></mat-drawer>
在您的组件中,您将拥有一个方法
onOpenedChange(e: boolean)
或者您可以使用组件中的视图子项来执行此操作
export class MyComponent implements OnInit {
@ViewChild('drawer') drawer: MatDrawer;
ngOnInit() {
this.drawer.openedChange.subscribe((o: boolean) => { console.log(`IsOpen: ${o}`) });
}
}
推荐阅读
- python - Repeated images shown on Flask app (Using base64)
- angularjs - Angular2中的“limitTo”是否有任何替代方案或加号
- java - 如何在 Spring Boot 中的函数调用后释放所有缓存的数据
- anti-patterns - 用于渲染整个页面的 OpenComponents
- android - 如何在自定义视图中添加可绘制资源
- python - Python Dash (Plotly): TypeError: unhashable type: 'Div'
- git - 当我推送到 git 时,我收到组件名称太长的错误
- html - 浏览器从 srcset 中为视口选择错误的图像
- vba - 如何将动态值历史记录保存到带有时间戳 VBA/Excel 的行中
- javascript - 我在使用 Internet Explorer 11 的 Fetch API 时遇到问题