I have 2 - 4 step form. I had separate out the form like below structure.
First there is auth
folder under then there register
folder. Under this register
- register.ts
and register.html
. Under register.html
I had implemented mat stepper
like below :
<mat-horizontal-stepper [linear]="isLinear" #stepper>
<mat-step [stepControl]="firstFormGroup">
<form [formGroup]="firstFormGroup">
<ng-template matStepLabel> step 1 </ng-template>
<mat-card class="example-card">
<mat-card-header>
<div mat-card-avatar class="example-header-image"></div>
<mat-card-title>step 1</mat-card-title>
</mat-card-header>
<mat-card-content>
<kt-stepone></kt-stepone>
</mat-card-content>
</mat-card>
<div>
</div>
</form>
</mat-step>
<mat-step [stepControl]="secondFormGroup">
<form [formGroup]="secondFormGroup">
<ng-template matStepLabel> step 2 </ng-template>
<mat-card class="example-card">
<mat-card-header>
<div mat-card-avatar class="example-header-image"></div>
<mat-card-title>step 2</mat-card-title>
</mat-card-header>
<mat-card-content>
<kt-steptwo></kt-steptwo>
</mat-card-content>
</mat-card>
</form>
</mat-step>
under my register.ts
:
export class RegisterComponent implements OnInit, OnDestroy {
isLinear = true;
}
Now this
<kt-stepone>
is my step 1 form which is separate module and there I implemented the Next button.
Now when I implemented isLinear = true;
then even after filling the whole form its not going on next step. If I didnt fill the form then its working as per expection highligting the fileds with red
For ref, here is <kt-stepone>
code :
<form class="kt-form" [formGroup]="steponeForm" autocomplete="off" (ngSubmit)="onSubmit()">
<div class="kt-portlet__body" >
//MY FORM
</div>
// submit button
<button mat-button matStepperNext color="primary" type="submit">Next</button>
</form>
Since I am using angular for first time, please tell me where I am making mistake in this approach.
Updated KT-STEPONE.ts:
import { MatStepper } from '@angular/material/stepper';
completed=false;
@ViewChild('stepper') stepper: MatStepper;
onSubmit(){
this.stepper.selected.completed = true;
this.stepper.next();
}
After RnD over this. I had finally got the working solution of this. Please follow this link. The way to do this is : We need to link up the every step component in register component. Here is the guide for this.