yup.validate возвращает только одно поле в массиве ошибок - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь добавить да в проект angular7. Я успешно добавил его в свой компонент.

  readonly optionalRequiredSchema = yup.object().shape({
    ['@name']: yup.string().required(),
    description: yup.string().required(),
    ['rule-type']: yup.string().required(),
    from: yup.object().required(),
    source: yup.object().required(),
    to: yup.object().required(),
    destination: yup.object().required(),
    service: yup.object().required(),
    application: yup.object().required(),
    action: yup.string().required()
  });

Я проверяю следующим образом

  validateData() {
    this.optionalRequiredSchema.validate(this.allData)
      .then(
        (data) => console.log(data)
      ).catch(err => {
        console.log(err);
        this.showToast('top-right', 'danger', JSON.stringify(err.errors))


      })
  }

Если я передаю весь пустой объект для проверки, он даст только 1 поле в массиве ошибок. когда я исправляю c, чем отображается следующее 1 поле. как мне получить список всех недопустимых полей.

Спасибо

1 Ответ

1 голос
/ 27 мая 2020

Да функция проверки принимает параметры второго аргумента. Pass {abortEarly: false} исправит вашу проблему

  validateData() {
    this.optionalRequiredSchema.validate(this.allData, {abortEarly: false})
      .then(
        (data) => console.log(data)
      ).catch(err => {
        console.log(err);
        this.showToast('top-right', 'danger', JSON.stringify(err.errors))


      })
  }
...