Angular Material步进线性验证无法按预期工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular Material步进线性验证无法按预期工作相关的知识,希望对你有一定的参考价值。

我正在尝试使用单一形式使用Angular Material Stepper。在进行下一步之前,我使用线性来激活验证。但它似乎没有按预期工作。

我正在创建我的反应形式,如下所示。

ngOnInit() 

    this.newDataRequestForm = new FormGroup(
      'firstFormGroup': new FormGroup(
        'firstCtrl': new FormControl('', [Validators.required, Validators.minLength(8)]),
        'secondCtrl': new FormControl('', Validators.required)
      ),
      'secondFormGroup': new FormGroup(
        'secondCtrl': new FormControl('', Validators.required)
      )
    );

  

我的html在下面。

<form [formGroup]="newDataRequestForm" (ngSubmit)="submit()">
    <mat-horizontal-stepper linear #stepper>
        <mat-step [stepControl]="firstFormGroup">
            <div formGroupName="firstFormGroup">
                <mat-grid-list cols="12" rowHeight="1:1">
                    <mat-grid-tile colspan="3"></mat-grid-tile>
                    <mat-grid-tile colspan="3">
                        <mat-form-field appearance="outline">
                            <mat-label>MY ID</mat-label>
                            <input matInput  formControlName="firstCtrl" >
            </mat-form-field>
          </mat-grid-tile>
          <mat-grid-tile colspan="3" >
            <mat-form-field appearance="outline" >
              <mat-label>MY Name</mat-label>
              <input matInput  formControlName="secondCtrl" >
            </mat-form-field>
          </mat-grid-tile>
        </mat-grid-list>
      </div>
      <button type="button" mat-button matStepperNext>Next</button>
    </mat-step>
    <mat-step [stepControl]="secondFormGroup">
      <div formGroupName="secondFormGroup">
        <ng-template matStepLabel>Fill out your address</ng-template>
        <mat-form-field>
          <input matInput placeholder="Address" formControlName="secondCtrl" required>
        </mat-form-field>
        <div>
          <button type="button" mat-button matStepperPrevious>Back</button>
          <button type="button" mat-button matStepperNext>Next</button>
        </div>
      </div>
    </mat-step>
    <mat-step>
      <ng-template matStepLabel>Done</ng-template>
      You are now done.
      <div>
        <button type="button" mat-button matStepperPrevious>Back</button>
        <button type="submit" mat-button>Submit</button>
      </div>
    </mat-step>
  </mat-horizontal-stepper>
</form>

知道我哪里错了吗?

提前致谢!

答案

线条:

<mat-step [stepControl]="firstFormGroup">

<mat-step [stepControl]="secondFormGroup">

是名为firstFormGroupsecondFormGroup的属性的输入绑定,您没有提及或显示的实现。

考虑到这一点,我相信你的问题是你的组件中没有带有这些名称的FormGroups,而是隐藏在newDataRequestForm内。

要解决此问题,请在组件中定义以下内容:

get firstFormGroup(): FormGroup 
    return this.newDataRequestForm.get('firstFormGroup');


get secondFormGroup(): FormGroup 
    return this.newDataRequestForm.get('secondFormGroup');

希望能帮助到你。

以上是关于Angular Material步进线性验证无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Angular Material:如何在 TS 中设置具有不同背景颜色的每个 mat-h​​orizo​​ntal-stepper 步进器图标

如何更改 Angular Material 步进器中的状态图标?

如何设置材料步进器默认打开第二项并设置图标颜色?(Angular Material)

如何使用模板驱动形式将角度路由与角度材料步进器(https://material.angular.io/components/stepper/overview)结合起来?

Angular Material Vertical Stepper 单一形式 .reset() 无法正常工作

Angular Material Stepper 步骤不能用 [hidden] 隐藏