Внутри одного из моих компонентов формы, скажем MyParentFormComponent
, мне нужно знать, какие валидаторы используются его родительским компонентом. Например,
const fc = new FormControl('', [Validators.email, Validators.required]);
Итак, в моем компоненте управления формой я хотел бы знать что эти два валидатора присутствуют. Причина в том, что этот пользовательский компонент from является оболочкой для других компонентов формы, поэтому я хотел бы передать эти валидаторы его дочерним элементам.
Итак, я попробовал:
export MyParentFormComponent implements OnInit, ControlValueAccessor {
@Input() formControlName: string;
constructor(@Optional() private controlContainer: ControlContainer) {}
ngOnInit(): void {
const control = this.controlContainer.control.get(formFieldName);
const validators = control.validator(''); // problems!!!
}
}
DEMO
Во-первых, функция control.validator
не ожидает строку, в моей IDE я получаю следующее сообщение:
По-видимому, ему нужен AbstractControl. Но когда я исправляю эту ошибку следующим образом:
control.validator('' as any);
, он возвращает
{ required: true }
, он содержит только Validators.required
. Всех остальных там нет.
Итак, у меня такое чувство, что это может быть неправильный путь для получения информации о валидаторах. Есть предложения, как мне получить этот список?
ОБНОВЛЕНИЕ: control.validator
не свойство, а функция