如何在 Angular Material 11 的 MatSlideToggle 中使用图标?

Posted

技术标签:

【中文标题】如何在 Angular Material 11 的 MatSlideToggle 中使用图标?【英文标题】:How to use an icon inside MatSlideToggle in Angular Material 11? 【发布时间】:2021-04-24 15:42:30 【问题描述】:

在Angular Material components overview 上有一个带有图标的滑动工具示例:

这看起来真不错。不幸的是,这个例子在组件的实际文档中没有解释。

所以我尝试的是这样的:

<mat-slide-toggle labelPosition="before" color="primary">
  <mat-icon>dark_mode</mat-icon>
  Dark Mode
</mat-slide-toggle>

我将这个包裹在一个菜单中,结果如下所示:

所以它几乎就在那里,但不是真的。一切都没有正确对齐。

我的问题是:

如何正确对齐图标、标签和切换? 如何像文档中的示例一样增加标签和切换之间的距离?

Try it on Stackblitz

【问题讨论】:

使用这个创建完整的演示 - codesandbox.io/s @m4n0 添加了Stackblitz demo 您在寻找这样的东西吗? nimb.ws/lUJEIu @m4n0 是的。它几乎看起来像 Material 文档中的示例。 【参考方案1】:

您可以在app.component.css文件中修改生成的CSS:

:host ::ng-deep .mat-slide-toggle-content 
  display: flex; /* Turn into a flexbox container for alignment */


.material-icons 
  margin-right: 5px; /* Spacing from the content */


:host ::ng-deep .mat-slide-toggle-label-before .mat-slide-toggle-bar 
  margin-left: 50px; /* Spacing from the icon and content */

添加.mat-slide-toggle-content.mat-slide-toggle-label-before .mat-slide-toggle-bar 就足够了,但由于某种原因它无法正常工作。尽管看起来不正统,但这里的解决方案很方便:CSS style from app.component.css not getting applied to the tabs body content

您可以在此处查看完整代码:StackBlitz Demo

【讨论】:

以上是关于如何在 Angular Material 11 的 MatSlideToggle 中使用图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 moment.js 依赖的情况下格式化 Angular Material datepicker

如何使用 Angular Material 构建 Ivy?

如何在同一组件中重用 Material Angular Datepicker

如何在 Angular Material 中使用 <md-icon>?

如何使用 Angular Material 让 mat-sidenav-content 占据 100% 的高度

Angular Material Flexbox - 如何在包裹的行之间添加边距?