角材料垫选择样式问题

Posted

技术标签:

【中文标题】角材料垫选择样式问题【英文标题】:Angular material mat-select styling issues 【发布时间】:2020-07-05 09:13:21 【问题描述】:

我正在使用 angular 8.0.0、angular material 和 Fuse Theme as admin panel。 问题是,每当我更改 mat-select 的样式时,它就会被应用,但经过一两次刷新后,角度材质会覆盖本地组件更改并应用默认值。 它也适用于所有组件我怎样才能改变只有一个 mat-select 的样式?

我的 html 的一部分是问题所在:

   <form>
    <mat-form-field>
        <mat-label class="label-colors"> bla bla </mat-label>
        <mat-select formControlName="">
            <mat-option value="active" class="empty-select">bla bla</mat-option>
            <mat-option value="inactive" >bla bla</mat-option>
        </mat-select>
       </mat-form-field>
       <mat-form-field>
        <mat-label class="label-colors"></mat-label>
        <mat-select formControlName="isReserved">
            <mat-option value="active"></mat-option>
            <mat-option value="inactive"></mat-option>
        </mat-select>
       </mat-form-field>
      </form>

scss 文件:

.mat-select-arrow
    color: rgba(255, 255, 255, 0.54)!important;
  
  .label-colors 
    color: #ffffff !important;
    font-size: 16px;
  
  
  // mat-input caret color
  .input-element-color 
    caret-color: #ffffff !important;
  
  .blue
    background-color: blue; 

.mat-form-field-underline
  background-color: rgb(61, 82, 89)!important;

.date-icons
    color: #ffffff !important;
    width: 100%;
    height: 100%;
   
   th
    font-weight: bold !important ;
    color:black !important;
    font-size: 14px !important;
  
  // .mat-select-value-text
  //   color: #fff!important;
  // 

  .mat-form-field
    //width: 155px; 
    margin: 3px;
  
  // body.theme-default .mat-select-value
  //   color: rgba(255, 255, 255, 0.87);
  // 
  .editdeleteicon
    color: #003042;
  
  .fix-text
    white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   max-width: 88px; 
   padding: 0 10px !important;
  
  .fix-text :hover
    overflow: visible;

尝试了有关 *** 的所有建议,但似乎无法更改 mat-select 的颜色并保持这种状态,即使我可以,但当我更改时,它确实会在其他任何地方发生变化。我希望我清楚

更新:通过添加类 mat-form-field 然后在 scss 中修复

 .example-class
    // inside this class added:
    .mat-select-value-text 
        color: red;
    
    

【问题讨论】:

【参考方案1】:

您使用了 !important,这有时有助于覆盖 css,但在这种情况下,您还有更多工作要做,因为它是 angular material 模块的一部分。 所以,你有两个选择:

1- 在课程前添加 ::ng-deep。例如

::ng-deep .className color: blue !important

2- 或者您应该在 style.css(或 style.scss,具体取决于您使用的是 css 还是 scc)中编写与您在那里编写的相同的内容,但这意味着这些更改将适用于任何地方的组件在您的应用程序中,例如,如果您在应用程序的另一部分使用 mat-select,则此处的更改将影响它,因为 style.css/style.scss 的范围在所有应用程序上。

所以你可以选择你需要的方法。

希望对你有帮助!

【讨论】:

您好,谢谢您的回答,虽然 ng-deep 已被弃用,但它在 angular.io 中也有说明,但我会尝试。

以上是关于角材料垫选择样式问题的主要内容,如果未能解决你的问题,请参考以下文章

角材料:垫选择不选择默认

可重复使用的角材料垫表

如何防止角材料垫菜单关闭?

角材料更改垫复选框内的刻度颜色

角材料垫按钮不会更新外部指令的禁用更改

全高弯曲的角材料垫抽屉,内容自动溢出