mat-step
に4つのmat-vertical-stepper.
があります。1番目のmat-step
のすべてのフィールドがカバーされるまで、2番目、3番目、4番目のmat-step
を無効にします。
私は試した:
<mat-step label="Step 1">
<!-- some codes-->
</mat-step>
ステップ1では、次のボタンがあり、すべてのフィールドがカバーされるまでこのボタンは無効になっています。
<button mat-raised-button color="primary" style="float:right"
[disabled]="!DetailsForm.valid" (click)="step2.disabled = false">Next</button>
次はステップ2です。
<mat-step label="Step 2" [disabled]="step2.disabled">
「無効はmat-step
の一部ではありません」というエラーが表示されます。
このように、残りの2つのmat-step
があります。 2番目、3番目、4番目のmat-step
を無効にしたい。
以下の場合、どうすればlinear
を使用できますか?
<mat-vertical-stepper #stepper>
<mat-step label="General Details">
<h4> First Name </h4>
</mat-step>
<mat-step label="Education">
<h4>Highest Education </h4>
</mat-step>
</mat-vertical-stepper>
そして、
<div class="col-md-9 col-lg-9">
<form [formGroup]="generalDetailsForm">
<div class="row">
<div class="col-md-5 col-lg-5">
<mat-form-field class="example-full-width">
<input matInput placeholder="First Name" [(ngModel)]="firstName">
</mat-form-field>
</div>
</div>
</form>
</div>
mat-step
では[stepControl]="formName"
を使用し、.ts
ではフォームの検証を行います。
linear
だけを使用しても役に立ちません。私は間違っていました。 [stepControl]
を使用しませんでした
<mat-horizontal-stepper #stepper [linear]="true">
<mat-step [completed]="false">
<!-- set completed = false to disable next step -->
</mat-step>
<mat-step>
this step would be disable
</mat-step>
</mat-horizontal-stepper>
mat-vertical-stepper
にはプロパティがありません無効例外メッセージに示されています。
設定してみてください<mat-vertical-stepper [linear]="true">
その後、ボタンの表示を処理する必要があります。ボタンには無効プロパティがあります。
ステップ2を無効にする場合は、ステップ1で[completed]を使用すると同時に、[stepControl]をnullに設定する必要があります。これは、[stepControl]が[completed]よりも優先されるためです。
<mat-horizontal-stepper #stepper [linear]="true">
<!-- step1 -->
<mat-step
[stepControl]="shouldNextStepBeDisabled ? null : formGroup"
[completed]="shouldNextStepBeDisabled ? false : formGroup.valid">
</mat-step>
....
</mat-horizontal-stepper>
ステップ-1:Component.ts
stepDisabled: boolean = true;
ステップ2:Component.css
::ng-deep .mat-step-header[aria-labelledby="disabled_Resi"] {
pointer-events: none !important;
cursor: not-allowed;
}
ステップ-3:Component.html
<mat-step [aria-labelledby]="stepDisabled ? 'disabled_Resi' : null" [stepControl]="ResidentalAddressFG"></mat-step>
ステップ:4
<button mat-stroked-button (click)="stepDisabled = !stepDisabled">{{stepDisabled ? 'Enable' : 'Disable'}} Step</button>
これを見ている人のために。
これをlinear
completed
属性で解決しました。
<mat-horizontal-stepper #stepper [linear]="true">
<mat-step state="state_1" label="label" [completed]="condition">
</mat-step>
....
</mat-horizontal-stepper>
完了属性を使用して、ステップを「完了」としてマークします
ドキュメントから:
または、Angularフォームを使用したくない場合は、完了したプロパティを各ステップに渡して、ユーザーがtrueになるまで続行できないようにすることができます。注completeとstepControlの両方が設定されている場合、stepControlが優先されます。
https://material.angular.io/components/stepper/overview
編集:例を追加