Я работаю с формами Dynami c, в которых поля формы взяты из объекта JSON. Есть два поля, одно для оплаты, а другое для типа оплаты. Оба связаны друг с другом. Если какое-либо из этих полей имеет значения, заполните другое поле, как требуется. Я добавил валидацию, используя
form.controls[element].setValidators([Validators.required]);
form.controls[element].updateValueAndValidity();
Валидаторы работают хорошо при использовании этого кода. Но проблема в том, что validator message
не отображается, если поле имеет недопустимый класс ng. Только граница red colour
.
Дайте мне предложение по этой проблеме. Добавление изображения одного поля с ошибкой проверки
Добавление jQuery, я уже пробовал.
$("body").off('focus','[class*="relatedField"]').on('focus','[class*="relatedField"]', (event)=> {
self.relatedFieldsArray.forEach(fieldArray => {
let key = fieldArray.key;
$("body").off('change focusout','.'+fieldArray.className).on('change focusout','.'+fieldArray.className, (event)=>{
let changedValue = event.target.value;
if( changedValue != ''){
fieldArray.relatedFields.forEach(element => {
$('.relatedField-'+element).addClass('star-symbol')
self.form.controls[element].setValidators([Validators.required]);
self.form.controls[element].updateValueAndValidity();
});
}
else{
fieldArray.relatedFields.forEach(element => {
if($('.relatedField-'+element).val() == ""){
$('.relatedField-'+element).removeClass('star-symbol');
self.form.controls[element].clearValidators();
self.form.controls[element].updateValueAndValidity();
}else{
$('.relatedField-'+key).addClass('star-symbol')
self.form.controls[key].setValidators([Validators.required]);
self.form.controls[key].updateValueAndValidity();
}
});
}
});
});
Здесь я добавляю класс к полю, класс начинается с 'relatedField-' и имени поля, если оно связано с другими полями. Входные поля, связанные с этим полем, добавляются в виде массива с именем relatedField. этот массив, имя нового класса и ключ входного поля добавлены в relatedFieldArray как JSON
объект.