Angular formArray的多个mat错误无法计算

Angular formArray的多个mat错误无法计算,angular,angular-material,angular-material-stepper,Angular,Angular Material,Angular Material Stepper,我希望有多条错误消息,但无法确定如何执行。。? 在这里,我需要分别验证每个步骤,这就是为什么我要使用这个步进器 <form [formGroup]="formGroup" method="POST" #f="ngForm"> <mat-vertical-stepper #linearVerticalStepper="matVerticalStepper" formArrayName="formArray" [linear]="true"> <

我希望有多条错误消息,但无法确定如何执行。。? 在这里,我需要分别验证每个步骤,这就是为什么我要使用这个步进器

<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>
//此字段为必填字段

//提供的电子邮件无效


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

如果打开,您将看到电子邮件验证程序不会弹出空值错误

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


如果你不知道怎么做,你必须帮助你。

我知道现在已经太晚了。但我认为这将有助于今后的参考。这是他们的官方示例。如果你仔细查看他们的电子邮件验证错误消息,它将是这样的

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

你想达到什么目的?我想为两种不同类型的情况显示两条不同的消息,即,
需要名字

名字应该在2-30个字符之间

我认为您希望显示mat error,即使表单字段未被触摸或值未更改。它是?正如@trichetriche所说,当inputI中没有值时,Validators.pattern、Validators.email或Validators.maxLength中不会出现错误。我希望针对两种不同类型的情况显示两条不同的消息,即,
需要名字=“FirstName.errors.maxlength | | | FirstName.errors.minlength”class=“color red pad4”>名字应该在2-30个字符之间

我向您解释了它不是那样工作的,我向您解释了如何使它像那样工作。您至少读过我的答案了吗?
            Validators.pattern(
              "^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$" 
            )]
          ],
        }),
      ])
    });
  }
 <mat-error *ngIf="email.invalid">{{getErrorMessage()}}</mat-error
getErrorMessage() {
if (this.email.hasError('required')) {
  return 'You must enter a value';
}

return this.email.hasError('email') ? 'Not a valid email' : '';
  }