Skip to content

Commit 4db843d

Browse files
committed
Add form control - consider each step as its own form group
1 parent 39a3649 commit 4db843d

File tree

2 files changed

+64
-3
lines changed

2 files changed

+64
-3
lines changed

src/demo-app/stepper/stepper-demo.html

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,52 @@ <h2>Linear Vertical Stepper Demo</h2>
4242
</md-vertical-stepper>
4343
</form>
4444

45+
<h2>Linear Vertical Stepper Demo</h2>
46+
<md-vertical-stepper>
47+
<md-step>
48+
<form [formGroup]="nameFormGroup" novalidate>
49+
<ng-template mdStepLabel>Fill out your name</ng-template>
50+
<md-input-container>
51+
<input mdInput placeholder="First Name" formControlName="firstNameFormCtrl" required>
52+
<md-error>This field is required</md-error>
53+
</md-input-container>
54+
<md-input-container>
55+
<input mdInput placeholder="Last Name" formControlName="lastNameFormCtrl" required>
56+
<md-error>This field is required</md-error>
57+
</md-input-container>
58+
<div>
59+
<button md-button mdStepperNext>Next</button>
60+
</div>
61+
</form>
62+
</md-step>
63+
64+
<md-step [disabled]="!nameFormGroup.valid">
65+
<form [formGroup]="phoneFormGroup" novalidate>
66+
<ng-template mdStepLabel>
67+
<div>Fill out your phone number</div>
68+
</ng-template>
69+
<md-input-container>
70+
<input mdInput placeholder="Phone number" formControlName="phoneFormCtrl" required>
71+
<md-error>This field is required</md-error>
72+
</md-input-container>
73+
<div>
74+
<button md-button mdStepperPrevious>Back</button>
75+
<button md-button mdStepperNext>Next</button>
76+
</div>
77+
</form>
78+
</md-step>
79+
80+
<md-step [disabled]="!phoneFormGroup.valid">
81+
<form>
82+
<ng-template mdStepLabel>Confirm your information</ng-template>
83+
Everything seems correct.
84+
<div>
85+
<button md-button>Done</button>
86+
</div>
87+
</form>
88+
</md-step>
89+
</md-vertical-stepper>
90+
4591
<h2>Vertical Stepper Demo</h2>
4692
<md-vertical-stepper>
4793
<md-step>

src/demo-app/stepper/stepper-demo.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component} from '@angular/core';
2-
import {Validators, FormBuilder, FormGroup} from '@angular/forms';
2+
import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
33

44
@Component({
55
moduleId: module.id,
@@ -11,6 +11,9 @@ export class StepperDemo {
1111
formGroup: FormGroup;
1212
isNonLinear = false;
1313

14+
nameFormGroup: FormGroup;
15+
phoneFormGroup: FormGroup;
16+
1417
steps = [
1518
{label: 'Confirm your name', content: 'Last name, First name.'},
1619
{label: 'Confirm your contact information', content: '123-456-7890'},
@@ -19,9 +22,12 @@ export class StepperDemo {
1922
];
2023

2124
/** Returns a FormArray with the name 'formArray'. */
22-
get formArray() { return this.formGroup.get('formArray'); }
25+
get formArray() {
26+
return this.formGroup.get('formArray');
27+
}
2328

24-
constructor(private _formBuilder: FormBuilder) { }
29+
constructor(private _formBuilder: FormBuilder) {
30+
}
2531

2632
ngOnInit() {
2733
this.formGroup = this._formBuilder.group({
@@ -35,5 +41,14 @@ export class StepperDemo {
3541
})
3642
])
3743
});
44+
45+
this.nameFormGroup = new FormGroup({
46+
firstNameFormCtrl: new FormControl('', Validators.required),
47+
lastNameFormCtrl: new FormControl('', Validators.required)
48+
});
49+
50+
this.phoneFormGroup = new FormGroup({
51+
phoneFormCtrl: new FormControl('', Validators.required)
52+
});
3853
}
3954
}

0 commit comments

Comments
 (0)