Issue
export class MustMatchDirective implements Validator {
@Input('mustMatch') mustMatch: string[] = [];
validate(formGroup: FormGroup): ValidationErrors {
return MustMatch(this.mustMatch[0], this.mustMatch[1])(formGroup); <-error here
}
}
export function MustMatch(controlName: string, matchingControlName: string) {
return (formGroup: FormGroup) => {
const control = formGroup.controls[controlName];
const matchingControl = formGroup.controls[matchingControlName];
if (matchingControl.errors
&& !matchingControl.errors.confirmedValidator) {
return;
}
if (control.value !== matchingControl.value) {
matchingControl.setErrors({ confirmedValidator: true });
} else {
matchingControl.setErrors(null);
}
}
}
May I know what's wrong with the code?
Solution
The arrow function returned inside MustMatch
function needs to return something, currently it returns void
(like the error tells you). It needs to return ValidationErrors | null
.
export class MustMatchDirective implements Validator {
@Input('mustMatch') mustMatch: string[] = [];
validate(formGroup: FormGroup): ValidationErrors | null {
return MustMatch(this.mustMatch[0], this.mustMatch[1])(formGroup); <-error here
}
}
export function MustMatch(controlName: string, matchingControlName: string) {
return (formGroup: FormGroup): ValidationErrors | null => {
const control = formGroup.controls[controlName];
const matchingControl = formGroup.controls[matchingControlName];
if (matchingControl.errors
&& !matchingControl.errors.confirmedValidator) {
return null;
}
let error: ValidationErrors | null;
if (control.value !== matchingControl.value) {
error = { confirmedValidator: true };
} else {
error = null;
}
matchingControl.setErrors(error);
return error;
}
}
Answered By - JSON Derulo
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.