Мне нужно назначить пользовательский валидатор для FormGroup. Я могу сделать это во время создания FormGroup следующим образом:
let myForm : FormGroup;
myForm = this.formBuilder.group({
myControl1: defaultValue,
myControl2: defaultValue
}, { validator: this.comparisonValidator })
comparisonValidator(g: FormGroup) {
if (g.get('myControl1').value > g.get('myControl2'.value)) {
g.controls['myControl1'].setErrors({ 'value2GreaterThanValue1': true });
return;
}
}
У меня есть ситуация, когда мне нужно добавить пользовательский валидатор после Я создал экземпляр FormGroup, поэтому я пытаюсь сделать это после создания myForm
вместо добавления валидатора, когда форма создается:
let myForm : FormGroup;
myForm = this.formBuilder.group({
myControl1: defaultValue,
myControl2: defaultValue
})
this.myForm.validator = this.comparisonValidator;
Это дает мне ошибку компилятора:
Type '(g: FormGroup) => void' is not assignable to type 'ValidatorFn'.
Type 'void' is not assignable to type 'ValidationErrors'.
Как назначить валидатор моему FormGroup
, чтобы formGroup
передавался в качестве аргумента моей comparisonValidator
функции?
Обновление - Я добавил строку, показывающую, где я делаю setErrors
в своем comparisonValidator
, чтобы было более точно понять, как я пытаюсь установить ошибку проверки.