更改角度材质的默认扩展面板箭头颜色

时间:2017-10-03 08:16:51

标签: angular angular-material2

我有一个角度扩展面板,如下所示。如何将下面箭头的颜色更改为白色?

我的代码(HTML):

<md-expansion-panel>
  <md-expansion-panel-header>
    <md-panel-title>
      Personal data
    </md-panel-title>
    <md-panel-description>
      Type your name and age
    </md-panel-description>
  </md-expansion-panel-header>

  <md-form-field>
    <input mdInput placeholder="First name">
  </md-form-field>

  <md-form-field>
    <input mdInput placeholder="Age">
  </md-form-field>
</md-expansion-panel>

我的代码(TS):

import {Component} from '@angular/core';

/**
 * @title Basic expansion panel
 */
@Component({
  selector: 'expansion-overview-example',
  templateUrl: 'expansion-overview-example.html',
})
export class ExpansionOverviewExample {}

enter image description here

7 个答案:

答案 0 :(得分:16)

工作代码如下:

<md-expansion-panel>
  <md-expansion-panel-header class="specific-class">
    <md-panel-title>
      Personal data
    </md-panel-title>
    <md-panel-description>
      Type your name and age
    </md-panel-description>
  </md-expansion-panel-header>

  <md-form-field>
    <input mdInput placeholder="First name">
  </md-form-field>

  <md-form-field>
    <input mdInput placeholder="Age">
  </md-form-field>
</md-expansion-panel>
import {Component} from '@angular/core';

/**
 * @title Basic expansion panel
 */
@Component({
  selector: 'expansion-overview-example',
  templateUrl: 'expansion-overview-example.html',
  styles: [`
    ::ng-deep .specific-class > .mat-expansion-indicator:after {
      color: white;
    }
  `],
})
export class ExpansionOverviewExample {}

说明:

  1. 为Angular动态添加的嵌套元素设置样式 您需要使用特殊选择器::ng-deep的材质组件。 这允许解决view encapsulation

  2. 为了覆盖动态应用的内置组件样式 您需要为选择器增加CSS specificity。那&#39; S 添加其他CSS类特定类的原因。如果你 要使用选择器 :: ng-deep .mat-expansion-indicator:在之后 扩展组件将覆盖它。

答案 1 :(得分:3)

您不必使用ng-deep。相反,您可以将此代码添加到样式表中:

.mat-expansion-panel-header-description, 
.mat-expansion-indicator::after {
    color: white;
}

请参阅GitHub文档https://github.com/angular/components/tree/master/src/material/expansion

答案 2 :(得分:2)

它以这种方式为我工作

HTML

<mat-accordion>
        <mat-expansion-panel class="specific-class"> 
          <mat-expansion-panel-header>
            <a mat-button>Lorem ipsum dolor sit amet.</a>
          </mat-expansion-panel-header>
          <ul>
            <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis, placeat.</li>
            <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis, placeat.</li>
            <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis, placeat.</li>
            <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis, placeat.</li>
            <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis, placeat.</li>
          </ul>
        </mat-expansion-panel>
      </mat-accordion>

CSS

/deep/ .mat-expansion-indicator::after, .mat-expansion-panel-header-description { color: red;}

答案 3 :(得分:1)

这对我有用 2018

html文件

ConcurrentHashMap

styles.css的

<md-expansion-panel>
  <md-expansion-panel-header class="specific-class">
    <md-panel-title>
      Personal data
    </md-panel-title>
    <md-panel-description>
      Type your name and age
    </md-panel-description>
  </md-expansion-panel-header>

  <md-form-field>
    <input mdInput placeholder="First name">
  </md-form-field>

  <md-form-field>
    <input mdInput placeholder="Age">
  </md-form-field>
</md-expansion-panel>

答案 4 :(得分:0)

您可以简单地将其添加到全局styles.css文件中。至少在7.2版中对我有效。

.mat-expansion-indicator::after {
  color: green;
}

答案 5 :(得分:0)

对于“@angular/material”:“^10.2.7”

您将 encapsulation: ViewEncapsulation.None 属性添加到您的 @Component 装饰器

@Component({
  selector: '...',
  templateUrl: '...',
  styleUrls: ['...'],
  encapsulation: ViewEncapsulation.None // <----
})

然后

.mat-expansion-panel-body {
  padding: 0 !important;
}

那么这个 CSS 将在使用 !important 或不使用时正常工作

::ng-deep/deep/ 不适用于新版本的 angular/material

答案 6 :(得分:-1)

如果您已经使用npm安装了角形材料,并使用.mat-expansion-indicator:after类更改了箭头的颜色,则可以直接在应用程序中直接转到material.scss。