angular - 多次调用相同的 mat-sidenav (Angular)
问题描述
在下面的代码中,我两次调用sidenav.toggle。一个在 div 和一个按钮处。但是sidenav仅在div
单击时打开。单击按钮时sidenav未打开。
任何人都可以为此提供解决方案。
<mat-card-content>
<div (click)="sidenav.toggle()" class="vl" >
<mat-sidenav-container>
<mat-sidenav #sidenav mode="side">
...
</mat-sidenav>
<mat-sidenav-content>
<button mat-icon-button (click)="sidenav.toggle()">
<i class="fa fa-arrow-circle-o-right"></i>
</button>
</mat-sidenav-content>
</div>
</mat-card-content>
提前致谢 :)
请在这件事上给予我帮助
解决方案
那是因为点击事件也会冒泡到 div,所以toggle()
被调用了两次。一个用于按钮单击侦听器和 div 单击侦听器。你需要使用.stopPropagation()
来防止这种情况:
<mat-card-content>
<div (click)="sidenav.toggle()" class="vl" >
<mat-sidenav-container>
<mat-sidenav #sidenav mode="side"></mat-sidenav>
<mat-sidenav-content>
<button mat-icon-button (click)="$event.stopPropagation(); sidenav.toggle()">
<i class="fa fa-arrow-circle-o-right"></i>
</button>
</mat-sidenav-content>
</mat-sidenav-container>
</div>
</mat-card-content>
也许在你的组件中使用一个函数更简洁,但你明白了
推荐阅读
- laravel - Laravel show 方法输出空对象
- python - 在 python trie 中存储字数
- reactjs - 减速器未执行
- javascript - 手机屏幕上的菜单有问题
- angular - Angular Material 微调器不适用于同步调用
- nuget - Squirrel 中的 NuGet 框架定位
- javascript - 调整窗口大小后移动导航下拉菜单不会消失
- android - 添加回溯在 WebRTC 上不起作用
- regex - 使用正则表达式的 Angular 响应式表单中的模式验证器
- c# - 从控制台应用程序引用时,静态文件不适用于 AspNetCore Web 应用程序