在Angular 7中,如果你想要在失去焦点时触发自定义验证,你可以使用updateOn
属性来设置验证的时机。默认情况下,Angular会在输入框的值发生变化时触发验证,而不是在失去焦点时触发。
下面是一个示例代码,展示了如何使用updateOn
属性来实现在失去焦点时触发自定义验证:
import { FormControl } from '@angular/forms';
export function customValidator(control: FormControl) {
if (control.value !== 'desiredValue') {
return { invalidValue: true };
}
return null;
}
import { Component } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-form',
template: `
`,
})
export class FormComponent {
myForm = this.fb.group({
myControl: ['', { validators: [customValidator], updateOn: 'blur' }]
});
constructor(private fb: FormBuilder) {}
}
在上面的代码中,updateOn: 'blur'
将会使得自定义验证器在失去焦点时触发。你也可以将updateOn
设置为其他值,比如'submit'
,以在提交表单时触发验证。
希望这个示例能帮助到你解决在Angular 7中自定义验证在失去焦点时不起作用的问题。