I am trying to get the OnBlur syntax correct but it is eluding me.
export class AppComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
published: true,
credentials: this.fb.array([]),
});
}
addCreds() {
const creds = this.form.controls.credentials as FormArray;
creds.push(this.fb.group({
username: ['', [this.isNameDuplicate(this.form)]],
password: '',
}));
}
isNameDuplicate(form:FormGroup): ValidatorFn {
return (c: AbstractControl): { [key: string]: boolean } | null => {
const userNames = this.form.get("credentials").value;
console.log(userNames);
const names = userNames.map(item=> item.username.trim());
const hasDuplicate = names.some(
(name, index) => names.indexOf(name, index + 1) != -1
);
if (hasDuplicate) {
console.log(hasDuplicate);
return { duplicate: true };
}
return null;
}
}
}
I have to make sure that the isNameDuplicate validator fires onblur but the syntax is eluding me.
Can i get some help please.
My try
addCreds() {
const creds = this.form.controls.credentials as FormArray;
creds.push(this.fb.group({
username: ['', {
validators:[this.isNameDuplicate(this.form)],
updateOn:'blur'}],
password: '',
}));
}
But i get an error saying isNameDuplicate does not exist on the component.