【发布时间】:2022-01-15 03:49:01
【问题描述】:
我有一个包含 Material Datepicker 的 Datepicker 组件。该组件接收一个datepickerConfig 对象,该对象描述了 Datepicker 的样式。例如,此对象描述要应用的阴影级别、焦点样式、悬停样式等。
我对 Material 样式很陌生,所以我想知道如何在运行时动态应用这些样式?
例如,对于阴影,我在我的 SCSS 文件中声明了以下变量:
/* shadow */
$shadow-opacity: rgba(0, 0, 0, 0.3);
$dp-box-shadow-mobile: 0 30px 40px $shadow-opacity;
$dp-box-shadow-desktop-1: 0 3px 6px $shadow-opacity;
$dp-box-shadow-desktop-2: 0 6px 12px $shadow-opacity;
...
// more variables for the different styles
.mat-datepicker-content {
// dynamically apply variables to these styles
// e.g. if datepickerConfig.shadow.level === 2
// then $dp-box-shadow-desktop-2 should be applied
box-shadow: ...;
border: ...;
border-radius: ...;
...
}
在运行时,我需要检查datepickerConfig 对象中的阴影级别,并动态地将正确的样式应用于元素。
我的日期选择器模板:
<mat-form-field appearance="fill">
<mat-label>Choose a date</mat-label>
<input matInput [matDatepicker]="picker">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker (opened)="opened()">
<mat-datepicker-actions>
<button mat-button matDatepickerCancel>CANCEL</button>
<button mat-raised-button matDatepickerApply>OK</button>
</mat-datepicker-actions>
</mat-datepicker>
</mat-form-field>
我怎样才能做到这一点,不仅是阴影,还有我必须动态设置的多种样式?我想知道用 Angular 做这件事的一种干净的方法......或者这只能通过 JS 来实现目标类吗?
谢谢。
【问题讨论】:
-
NgStyle 指令可能适合您吗?
标签: css angular angular-material datepicker