Skip to content

Commit 0f69262

Browse files
author
Your Name
committed
Angular Forms In Depth
1 parent a010946 commit 0f69262

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

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

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727

2828
</mat-date-range-input>
2929

30+
<mat-error *ngIf="form.errors?.promoPeriod && form.dirty">
31+
The start date must be before the end date.</mat-error>
32+
3033
<mat-datepicker-toggle matSuffix [for]="promoPicker"></mat-datepicker-toggle>
3134

3235
<mat-date-range-picker #promoPicker></mat-date-range-picker>

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

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

45

56
@Component({
@@ -19,6 +20,9 @@ export class CreateCourseStep2Component implements OnInit {
1920
]],
2021
promoStartAt: [null],
2122
promoEndAt: [null]
23+
}, {
24+
validators: [createPromoRangeValidator()],
25+
updateOn: 'blur'
2226
});
2327

2428
constructor(private fb: FormBuilder) {
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {FormGroup, ValidatorFn, Validators} from '@angular/forms';
2+
3+
4+
export function createPromoRangeValidator(): ValidatorFn {
5+
return (form: FormGroup): Validators | null => {
6+
7+
const start:Date = form.get("promoStartAt").value;
8+
9+
const end:Date = form.get("promoEndAt").value;
10+
11+
if (start && end) {
12+
const isRangeValid = (end.getTime() - start.getTime() > 0);
13+
14+
return isRangeValid ? null : {promoPeriod:true};
15+
}
16+
17+
return null;
18+
}
19+
}

0 commit comments

Comments
 (0)