Я пытаюсь создать очень общую \ динамическую реактивную форму, которая может использовать пользовательскую функцию проверки для группы форм (для сравнения 2 дат).Эта функция может быть любой функцией проверки типа ValidatorFn:
export interface ValidatorFn {
(control: AbstractControl): ValidationErrors | null;
}
Вот основная проблема:
Я определяю функцию в виде файла конфигурации и запускаю реактивную формус ним (получая функцию в качестве параметра) и установите formGroup с validationFn.Вот функция:
customValidationFunction : ValidatorFn = (group : FormGroup) : ValidationErrors | null =>
{
return (/*control : AbstractControl*/)/*:{[key: string] : any} | null*/ =>
{
if (group.controls["CreatedDateFormatFrom"] && group.controls["CreatedDateFormatTo"])
{
let from : AbstractControl = group.get("CreatedDateFormatFrom");
let to : AbstractControl = group.get("CreatedDateFormatTo");
const inValid = from && to && to.value < from.value;
return inValid ? {'invalidDates' : true } : null;
}
return null;
}
}
Теперь в инициализации реактивной формы «настроить \ универсальный \ динамически созданный» я задаю функцию (или некоторые функции):
initForm(formGroupCustomValidation? : ValidatorFn[] )
{
let group: any = {};
//Here I initiate the group with FormControls, for example:
group[<fieldName>] = new FormControl(<some value> || '');
//This is where the custom validation function comes:
if (formGroupCustomValidation)
{
this.form = new FormGroup(group, {validators:
formGroupCustomValidation });
}
this.form.valueChanges.subscribe(values => {
console.log(values);
this.formValid();
})
}
IПрошу прощения за «размытый» код, но это связано с динамически создаваемой формой.Проблема в том, как передать и выполнить функцию с параметром group: FormGroup?Я склонен полагать, что у меня есть некоторая проблема с определением функции \ областью действия и т. Д. Я не вижу тела функции, вызываемого при попытке отладки функции.Пожалуйста Поддержи.