【发布时间】:2018-03-27 18:07:33
【问题描述】:
如何设置 mat-select 的面板组件的样式。从我得到的文档中,我需要提供 panelClass,所以我把它变成这样:
<mat-form-field>
<mat-select placeholder="Search for"
[(ngModel)]="searchClassVal"
panelClass="my-select-panel-class"
(change)="onSearchClassSelect($event)">
<mat-option *ngFor="let class of searchClasses" [value]="class.value">{{class.name}}</mat-option>
</mat-select>
</mat-form-field>
我在开发人员工具中检查了此类已附加到 DOM 中的面板并且已附加。所以我有我的自定义 scss 类附加到这个元素。现在,当我提供 css 时,它就不起作用了。例如,我的 scss 如下所示:
.my-select-panel-class {
width:20px;
max-width:20px;
background-color: red;
font-size: 10px;
}
面板的宽度总是等于选择元素的width。有时在选项中你有太长的字符串,我想让它更宽一点。有什么办法可以做到这一点。我的组件中的样式即使background-color 也不起作用。有人知道为什么这会表现得如此奇怪吗?
我正在使用: 角 4.4.5 @角/材料:2.0.0-beta.12
【问题讨论】:
-
这是你要找的(我将宽度设置为其他值)? plnkr.co/edit/gXaf7j6EfWkT3nRMOXOi?p=preview
-
嘿!谢谢你的榜样。它确实有效,但我试图用
::ng-deep避免这种解决方案,因为:angular.io/guide/component-styles#deprecated-deep--and-ng-deep -
然后你可以移除 ::ng-deep 并设置封装:ViewEncapsulation.None :)
-
你知道我对角度和材料设计非常陌生。我来自iOS开发。什么是封装?你能指点我一些文档吗?
-
谢谢!为什么当我将样式放入主 style.scss 文件(此样式未附加到任何特定组件)时这不起作用?我认为我需要小心禁用封装,因为它会影响其他组件或者我错了?
标签: css angular typescript angular-material