Skip to content

Commit 08c60b5

Browse files
committed
Angular Forms Course
1 parent 0524534 commit 08c60b5

File tree

5 files changed

+52
-38
lines changed

5 files changed

+52
-38
lines changed

src/app/create-course/create-course-step-one/create-course-step-one.component.html

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,6 @@
3434

3535
</mat-form-field>
3636

37-
<mat-radio-group formControlName="courseType">
38-
<mat-radio-button value="free">Free</mat-radio-button>
39-
<mat-radio-button value="premium">Premium</mat-radio-button>
40-
</mat-radio-group>
41-
42-
<mat-form-field>
43-
44-
<input matInput
45-
placeholder="Price"
46-
formControlName="price">
47-
48-
</mat-form-field>
49-
5037
<mat-form-field>
5138

5239
<mat-select placeholder="Select category" formControlName="category">
@@ -79,23 +66,6 @@
7966
Downloads allowed?
8067
</mat-checkbox>
8168

82-
<mat-form-field>
83-
84-
<mat-label>Promotional period</mat-label>
85-
86-
<mat-date-range-input [rangePicker]="promoPicker">
87-
<input matStartDate placeholder="Start date" formControlName="promoPeriodStartAt">
88-
<input matEndDate placeholder="End date" formControlName="promoPeriodEndAt">
89-
</mat-date-range-input>
90-
91-
<mat-datepicker-toggle matSuffix [for]="promoPicker"></mat-datepicker-toggle>
92-
93-
<mat-date-range-picker #promoPicker></mat-date-range-picker>
94-
95-
<mat-error *ngIf="form.errors?.promoPeriod && form.dirty">The start date must be before the end date.</mat-error>
96-
97-
</mat-form-field>
98-
9969
<mat-form-field appearance="outline">
10070

10171
<textarea matInput placeholder="Description"

src/app/create-course/create-course-step-one/create-course-step-one.component.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,10 @@ export class CreateCourseStepOneComponent implements OnInit {
2222
title: ["", [Validators.required, Validators.minLength(3), Validators.maxLength(60)]],
2323
adminPassword: ["", [Validators.required, Validators.minLength(8), createPasswordStrengthValidator()]],
2424
supportEmail: ["", [Validators.required, Validators.email]],
25-
price: [null, [Validators.required, Validators.pattern("[0-9]+"), Validators.min(1), Validators.max(9999)]],
2625
category: ["BEGINNER", Validators.required],
27-
courseType: ["free", Validators.required],
2826
downloadsAllowed: [false, Validators.requiredTrue],
29-
promoPeriodStartAt: [null],
30-
promoPeriodEndAt: [null],
3127
releasedAt: [new Date(), Validators.required],
3228
longDescription: ["",[Validators.required, Validators.minLength(3)]]
33-
}, {
34-
validators: createPromoRangeValidator()
3529
});
3630
}
3731

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<div [formGroup]="form">
2+
3+
4+
<mat-radio-group formControlName="courseType">
5+
<mat-radio-button value="free">Free</mat-radio-button>
6+
<mat-radio-button value="premium">Premium</mat-radio-button>
7+
</mat-radio-group>
8+
9+
<mat-form-field>
10+
11+
<input matInput
12+
placeholder="Price"
13+
formControlName="price">
14+
15+
</mat-form-field>
16+
17+
<mat-form-field>
18+
19+
<mat-label>Promotional period</mat-label>
20+
21+
<mat-date-range-input [rangePicker]="promoPicker">
22+
<input matStartDate placeholder="Start date" formControlName="promoPeriodStartAt">
23+
<input matEndDate placeholder="End date" formControlName="promoPeriodEndAt">
24+
</mat-date-range-input>
25+
26+
<mat-datepicker-toggle matSuffix [for]="promoPicker"></mat-datepicker-toggle>
27+
28+
<mat-date-range-picker #promoPicker></mat-date-range-picker>
29+
30+
<mat-error *ngIf="form.errors?.promoPeriod && form.dirty">The start date must be before the end date.</mat-error>
31+
32+
</mat-form-field>
33+
34+
<div class="form-val">
35+
36+
{{form.errors | json}}
37+
38+
</div>
39+
40+
</div>

src/app/create-course/create-course-step-two/create-course-step-two.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {Component} from '@angular/core';
22
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
3+
import {createPromoRangeValidator} from '../../validators/date-range.validator';
34

45

56

@@ -13,7 +14,14 @@ export class CreateCourseStepTwoComponent {
1314
form: FormGroup;
1415

1516
constructor(private fb: FormBuilder) {
16-
17+
this.form = fb.group({
18+
price: [null, [Validators.required, Validators.pattern("[0-9]+"), Validators.min(1), Validators.max(9999)]],
19+
courseType: ["free", Validators.required],
20+
promoPeriodStartAt: [null],
21+
promoPeriodEndAt: [null]
22+
}, {
23+
validators: createPromoRangeValidator()
24+
});
1725

1826

1927
}

src/app/create-course/create-course.component.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ <h2 class="title">Create New Course</h2>
1818

1919
</mat-step>
2020

21-
<mat-step>
21+
<mat-step [stepControl]="stepTwo.form">
2222

2323
<ng-template matStepLabel>course pricing details</ng-template>
2424

25+
<create-course-step-two #stepTwo></create-course-step-two>
26+
2527
<div>
2628
<button mat-raised-button matStepperPrevious>Back</button>
2729
<button mat-raised-button color="primary" matStepperNext>Continue to Step 3</button>

0 commit comments

Comments
 (0)