如何使用 angular 和 angular material 将步进器从一步移动到第二步
How to move stepper from one step to second step using angular and angular material
我有 2 - 4 步表格。我已经分离出如下结构的表格。
首先是 auth
文件夹,然后是 register
文件夹。在这个 register
- register.ts
和 register.html
下。在 register.html
下,我实现了 mat stepper
如下所示:
<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>
在我的 register.ts
下:
export class RegisterComponent implements OnInit, OnDestroy {
isLinear = true;
}
现在这个
<kt-stepone>
是我的第 1 步表单,它是单独的模块,我在那里实现了“下一步”按钮。
现在,当我实施 isLinear = true;
时,即使填写了整个表格,也不会进行下一步。如果我没有填写表格,那么它会按预期工作,用红色
突出显示文件
作为参考,这里是<kt-stepone>
代码:
<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>
因为我是第一次使用angular,请告诉我这个方法哪里出错了。
更新 KT-STEPONE.ts:
import { MatStepper } from '@angular/material/stepper';
completed=false;
@ViewChild('stepper') stepper: MatStepper;
onSubmit(){
this.stepper.selected.completed = true;
this.stepper.next();
}
我认为您的步进器和 kt-stepone 没有通信。尝试实现服务或@inpit @output 来设置步骤有效。或者如果你的逻辑是分开的,你可以删除 [stepControl]
和
设置完成="false"
在你的组件中
@ViewChild('stepper') stepper: MatStepper;
onButton() {
this.stepper.selected.completed = true;
this.stepper.next();
}
在 RnD 之后。我终于得到了这个的工作解决方案。请遵循此 link. The way to do this is : We need to link up the every step component in register component. Here 是此指南。
<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>
我有 2 - 4 步表格。我已经分离出如下结构的表格。
首先是 auth
文件夹,然后是 register
文件夹。在这个 register
- register.ts
和 register.html
下。在 register.html
下,我实现了 mat stepper
如下所示:
<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>
在我的 register.ts
下:
export class RegisterComponent implements OnInit, OnDestroy {
isLinear = true;
}
现在这个
<kt-stepone>
是我的第 1 步表单,它是单独的模块,我在那里实现了“下一步”按钮。
现在,当我实施 isLinear = true;
时,即使填写了整个表格,也不会进行下一步。如果我没有填写表格,那么它会按预期工作,用红色
作为参考,这里是<kt-stepone>
代码:
<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>
因为我是第一次使用angular,请告诉我这个方法哪里出错了。
更新 KT-STEPONE.ts:
import { MatStepper } from '@angular/material/stepper';
completed=false;
@ViewChild('stepper') stepper: MatStepper;
onSubmit(){
this.stepper.selected.completed = true;
this.stepper.next();
}
我认为您的步进器和 kt-stepone 没有通信。尝试实现服务或@inpit @output 来设置步骤有效。或者如果你的逻辑是分开的,你可以删除 [stepControl] 和 设置完成="false" 在你的组件中
@ViewChild('stepper') stepper: MatStepper;
onButton() {
this.stepper.selected.completed = true;
this.stepper.next();
}
在 RnD 之后。我终于得到了这个的工作解决方案。请遵循此 link. The way to do this is : We need to link up the every step component in register component. Here 是此指南。
<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>