3

我想要多条错误消息,但不知道该怎么做..?在这里,我需要分别验证每个步骤,这就是我使用此步进器的原因

<form [formGroup]="formGroup" method="POST" #f="ngForm">
    <mat-vertical-stepper #linearVerticalStepper="matVerticalStepper" formArrayName="formArray" [linear]="true">
        <mat-step formGroupName="0" [stepControl]="formArray?.get([0])">
            <mat-form-field>
               <mat-label>Email</mat-label>
               <input matInput formControlName="emailCtrl" required>
               <mat-error>This field is required</mat-error>
               <mat-error>Invalid Email</mat-error>
            </mat-form-field>
        </mat-step>
   </mat-vertical-stepper>
</form>

表单生成器是:-

ngOnInit() {
    this.formGroup = this._formBuilder.group({
      formArray: this._formBuilder.array([
        this._formBuilder.group({
          emailCtrl: [
            "",[
            Validators.required,     

//这是必填栏

            Validators.pattern(
              "^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$" 

// 提供的电子邮件无效

            )]
          ],
        }),
      ])
    });
  }
4

2 回答 2

1

您不能同时显示验证消息的原因是源代码本身。

如果您在他们的官方存储库中打开源代码,在右侧,您将看到电子邮件验证器不会针对空值弹出错误。

如果您希望显示这两个错误,则必须自己覆盖验证器并将其提供给您自己的表单控件。

如果你不知道怎么做,你有关于自定义验证器的文档来帮助你。

于 2018-11-06T08:16:05.567 回答
1

我知道为时已晚。但我认为这将有助于未来的参考。这是在他们的官方示例中。如果您仔细查看他们的电子邮件验证错误消息,它将是这样的。

 <mat-error *ngIf="email.invalid">{{getErrorMessage()}}</mat-error

在 ts 文件中,您必须根据错误定义要显示的消息

getErrorMessage() {
if (this.email.hasError('required')) {
  return 'You must enter a value';
}

return this.email.hasError('email') ? 'Not a valid email' : '';
  }
于 2020-04-19T14:30:27.233 回答