2

我在 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>

这是必填字段,在此输入字段的占位符中,“*”附加在占位符之后,如下所示: 在此处输入图像描述

我想将占位符中“*”的颜色更改为红色。我怎样才能改变颜色?

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

在此处输入图像描述

4

6 回答 6

9

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

.mat-form-field-required-marker { color: red }
于 2020-01-14T21:54:55.587 回答
5

试试这个,在 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;
}
于 2019-08-27T11:07:15.580 回答
2

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

::ng-deep .mat-form-field-required-marker { color: red }
于 2020-04-25T08:02:58.710 回答
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 中的伪类来做你自己的事情:after

于 2018-09-10T20:10:39.907 回答
1

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

Angular Material 将占位符视为标签,所以我写了这个 css 来改变 asterick * 的颜色。

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

这对我有用,但请注意,/deep/ 选择器已贬值,所以最终这在未来将不起作用......

于 2018-09-10T21:37:22.750 回答
0

不幸的是,即使占位符文本的样式也非常实验性,我尝试添加: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">

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

于 2018-09-10T19:46:00.453 回答