У меня есть метод, который применяет проверку на основе значения элементов в группе форм. Этот метод применяется ко всем элементам в группе форм. Мне нужно, чтобы последний элемент в группе форм был исключен из этого метода, но я не могу понять, как его изменить.
В моем файле ТС
ngOnInit() {
this.initForm();
}
initForm() {
this.sectionSix = this.formBuilder.group({
medicaidOrSssi: [''],
snap: [''],
freeOrReducedPriceLunch: [''],
tanf: [''],
wic: [''],
noneOfTheAbove: [''],
dislocatedWorker: [''],
}, { validator: this.selectAtleastOne });
}
Метод, который мне нужно изменить, это один
selectAtleastOne(c: FormGroup) {
const selectAtleastOne = Object.values(c.value).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}
Первые 6 элементов в группе формы — это флажки, а последний элемент — раскрывающийся список. Я не могу переместить последний вопрос в другую группу форм, он должен остаться в этой.
Проблема в том, что нужно установить хотя бы один флажок. Если ничего не выбрано, появится сообщение подтверждения. Теперь он ведет себя следующим образом: если я не устанавливаю флажки и выбираю значение из раскрывающегося списка (последний элемент в группе форм), он считает флажки действительными, даже если они все пустые.




Вы можете опустить раскрывающееся поле из c.value, а затем проверить логическое значение. Я думаю, это сработает.
Попробуй это.
selectAtleastOne(c: FormGroup) {
const { ['dislocatedWorker']: dd, ...allCheckboxes } = c.value;
const selectAtleastOne = Object.values(allCheckboxes).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}
Это сработало очень хорошо. Спасибо вам за помощь.