Измените этот метод, чтобы он применялся ко всем элементам, кроме последнего элемента в группе форм. Реактивная форма Angular 7. Нет jquery или ngModel

У меня есть метод, который применяет проверку на основе значения элементов в группе форм. Этот метод применяется ко всем элементам в группе форм. Мне нужно, чтобы последний элемент в группе форм был исключен из этого метода, но я не могу понять, как его изменить.

В моем файле ТС

 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 элементов в группе формы — это флажки, а последний элемент — раскрывающийся список. Я не могу переместить последний вопрос в другую группу форм, он должен остаться в этой.

Проблема в том, что нужно установить хотя бы один флажок. Если ничего не выбрано, появится сообщение подтверждения. Теперь он ведет себя следующим образом: если я не устанавливаю флажки и выбираю значение из раскрывающегося списка (последний элемент в группе форм), он считает флажки действительными, даже если они все пустые.

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете опустить раскрывающееся поле из 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
    }
  };
}

Это сработало очень хорошо. Спасибо вам за помощь.

ghostagent151 20.07.2019 00:51

Другие вопросы по теме