如何在角形材料字段中更改所需生成的星号的CSS?

时间:2018-09-10 19:12:10

标签: html css angular angular-material-6

我在angular6应用中使用了角材料。

        <mat-form-field fxFlex>
            <mat-label [class.form-label]="fg.get('email').valid && fg.get('email').touched">{{attributesLabels.email}}</mat-label>
            <input matInput formControlName="email" required [autofocus]="true">
            <mat-error *ngIf="fg.get('email').hasError('required')">Email is required</mat-error>
            <mat-error *ngIf="fg.get('email').hasError('email') && !fg.get('email').hasError('required') ">Invalid email</mat-error>
        </mat-form-field>

这是必填字段,在此输入字段的占位符中,在占位符之后附加“ *”,如下所示: enter image description here

我想将占位符中“ *”的颜色更改为红色。如何更改颜色?

HTML由上述mat-form-field生成:

enter image description here

6 个答案:

答案 0 :(得分:3)

只需尝试一下,在html部分

 <mat-form-field class="mat-form-field-fluid" appearance="outline">
    <mat-label class="asterisk_input" >First Name</mat-label>
    <input matInput formControlName="email" />
</mat-form-field>

并将以下代码添加到组件.css文件中

.asterisk_input::after 
{
    content:" *"; 
    color: red;
}

答案 1 :(得分:1)

在matFormField上有一个输入,您可以使用hideRequiredMarker,如此处https://material.angular.io/components/form-field/api

   <mat-form-field fxFlex hideRequiredMarker="true">
        <mat-label [class.form-label]="fg.get('email').valid && fg.get('email').touched">{{attributesLabels.email}}</mat-label>
        <input matInput formControlName="email" required [autofocus]="true">
        <mat-error *ngIf="fg.get('email').hasError('required')">Email is required</mat-error>
        <mat-error *ngIf="fg.get('email').hasError('email') && !fg.get('email').hasError('required') ">Invalid email</mat-error>
    </mat-form-field>

那么也许您可以尝试使用CSS中的pseudoClasses做自己的事情:

答案 2 :(得分:1)

在您的css文件中添加以下代码:

::ng-deep .mat-form-field-required-marker { color: red }

答案 3 :(得分:0)

不幸的是,即使styling of the placeholder text都是实验性的,我尝试添加:after伪选择器来获得红色星号,但没有用。

以下是我能最接近您想要的东西。

::-webkit-input-placeholder { /* Chrome/Opera/Safari */
  color: #ccc;
}

::-moz-placeholder { /* Firefox 19+ */
  color: #ccc;
}

:-ms-input-placeholder { /* IE 10+ */
  color: #ccc;
}

:-moz-placeholder { /* Firefox 18- */
  color: #ccc;
}
  
label:after {
  content: " *";
  color: #ff0000;
  }
<label>Email</label>
<br/>
<input type="email" placeholder="Email" class="required">

或者,您可以将整个占位符文本设为红色,并在其中添加星号。

答案 4 :(得分:0)

ckIkram的建议很好,但是我想出了另一种解决方案。

Angular Material将占位符视为标签,所以我写了这个CSS来更改星号*的颜色。

/deep/ label span.mat-form-field-required-marker{
   color:red;
}

这是对我有用的,但请注意,/ deep /选择器已贬值,因此最终将来将无法使用...

答案 5 :(得分:0)

对我来说,这超级简单的事情只是在styles.scss中放置了项目的根源

.mat-form-field-required-marker { color: red }