如何删除按钮样式或覆盖动态添加的类到材质2中的按钮

Ket*_*ari 4 html css angular-material2 angular

我有打开按钮

<button mat-raised-button (click)="openModal()
"type="button" color="primary">Open Modal </button>
Run Code Online (Sandbox Code Playgroud)

单击按钮按钮时,弹出模式打开并关闭后模式。cdk-focused并将cdk-program-focused类添加到此按钮并对此产生一些连锁反应。

我想摆脱这种风格,想要删除或覆盖那些在关闭模态后添加到按钮的类*

在此输入图像描述

Veg*_*ega 5

我建议两种解决方案:

1.首先,在该按钮上设置一个附加类,以避免所有垫子凸起按钮受到样式更改的影响,我想这不是您的目标。

HTML:

<button mat-raised-button class="myButton" (click)="openDialog();">Pick one</button>

CSS:

.myButton:focus{
    box-shadow: 0 0 rgba(255, 255, 255, 1) !important;
    transition:none !important;
    background-color: rgba(255, 255, 255, 1) !important;
    -webkit-tap-highlight-color:rgba(255, 255, 255, 1) !important;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以通过以下方式设置 mat-raised-button 的样式

a) 使用 ::ng-deep 在组件的样式表中设置它:

::ng-deep .myButton>.mat-button-focus-overlay {
    background-color:transparent !important;
}

::ng-deep .mat-app-background{
  background: white !important
}
Run Code Online (Sandbox Code Playgroud)

演示

b) 使用 ViewEncapsulation.none 设置:

班级:

import { ViewEncapsulation } from '@angular/core';
...
@Component({
...
    encapsulation:ViewEncapsulation.None
})
Run Code Online (Sandbox Code Playgroud)

CSS:

.myButton>.mat-button-focus-overlay {
    background-color:transparent !important;
}

.myButton>.mat-app-background{
  background: white !important
}
Run Code Online (Sandbox Code Playgroud)

演示

c) 在 style.css 中设置:

.myButton>.mat-button-focus-overlay {
    background-color:transparent !important;
}

.myButton>.mat-app-background{
  background: white !important
}
Run Code Online (Sandbox Code Playgroud)

演示

  1. 当您单击该按钮时,该按钮将获得焦点。通过将焦点设置在其他元素上来将焦点从该按钮移开:

... <input matInput #input [(ngModel)]="name" placeholder="What's your name?"> ... <button mat-raised-button class="myButton" (click)=" input.focus();openDialog() ">Pick one </button>

演示