diff --git a/apps/forms/62-crossfield-validation-signal-form/src/app/app.component.ts b/apps/forms/62-crossfield-validation-signal-form/src/app/app.component.ts index 7d2005867..6a89ba5e7 100644 --- a/apps/forms/62-crossfield-validation-signal-form/src/app/app.component.ts +++ b/apps/forms/62-crossfield-validation-signal-form/src/app/app.component.ts @@ -1,67 +1,25 @@ import { JsonPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; import { - AbstractControl, - FormControl, - FormGroup, - ReactiveFormsModule, - ValidationErrors, - ValidatorFn, - Validators, -} from '@angular/forms'; + FormField, + email, + form, + minLength, + required, + validate, +} from '@angular/forms/signals'; -function passwordMatchValidator(): ValidatorFn { - return (control: AbstractControl): ValidationErrors | null => { - const form = control as FormGroup; - if (!form) { - return null; - } - - const password = form.value.password; - const confirmPassword = form.value.confirmPassword; - - if (!confirmPassword) { - return null; - } - - if (password !== confirmPassword) { - form.controls['confirmPassword'].setErrors({ passwordMismatch: true }); - } - - return null; - }; -} - -function endDateAfterStartDateValidator(): ValidatorFn { - return (control: AbstractControl): ValidationErrors | null => { - const form = control as FormGroup; - if (!form) { - return null; - } - - const startDate = form.value.startDate; - const endDate = form.value.endDate; - - if (!startDate || !endDate) { - return null; - } - - const start = new Date(startDate).getTime(); - const end = new Date(endDate).getTime(); - - if (end > start) { - form.controls['endDate'].setErrors(null); - } else { - form.controls['endDate'].setErrors({ endDateBeforeStart: true }); - } - - return null; - }; +interface IFormValue { + email: string; + password: string; + confirmPassword: string; + startDate: string; + endDate: string; } @Component({ selector: 'app-root', - imports: [ReactiveFormsModule, JsonPipe], + imports: [FormField, JsonPipe], template: `
{{ this.form.getRawValue() | json }}{{ form().value() | json }}