1

我希望步进器中的一个步骤达成协议,但不希望额外的按钮显示“我同意我刚刚检查同意的内容”。只需单击复选框即可。

使用标准的 Angular 示例,我将按钮换成了复选框,步进器不会向前移动。

<button mat-raised-button (click)="isLinear = !isLinear" id="toggle-linear">
  {{!isLinear ? 'Enable linear mode' : 'Disable linear mode'}}
</button>
<mat-vertical-stepper [linear]="isLinear" #stepper>
  <mat-step [stepControl]="firstFormGroup">
    <form [formGroup]="firstFormGroup">
      <ng-template matStepLabel>Agree with Terms</ng-template>
      <div>
        <mat-checkbox matStepperNext formControlName="firstCtrl" required> I agree </button>
      </div>
    </form>
  </mat-step>
  <mat-step [stepControl]="secondFormGroup">
    <form [formGroup]="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 mat-button matStepperPrevious>Back</button>
        <button mat-button matStepperNext>Next</button>
      </div>
    </form>
  </mat-step>
  <mat-step>
    <ng-template matStepLabel>Done</ng-template>
    You are now done.
    <div>
      <button mat-button matStepperPrevious>Back</button>
      <button mat-button (click)="stepper.reset()">Reset</button>
    </div>
  </mat-step>
</mat-vertical-stepper>

预计单击复选框并让步进器直接移动到第 2 步。

4

1 回答 1

1

我想到了。关键字 matStepperNext 似乎不适用于复选框。但是,如果在复选框 HTML 中,您在步进器的 div 中包含 #stepper...

<mat-vertical-stepper #stepper [linear]="isLinear">you include a (change) event calling a function...

您可以添加一个(更改)事件来调用具有该名称的函数...

<mat-checkbox matStepperNext (change)="goForward(stepper);" formControlName="firstCtrl" required> I agree </button>

然后,在 .ts 中,确保包含...

import { MatStepper } from '@angular/material/stepper';

...然后添加此功能...

  goForward(stepper: MatStepper){
    stepper.next();
  }

当您单击复选框时,它应该会进入下一步。

于 2019-02-13T21:31:16.330 回答