首页 > 解决方案 > yup.validate 仅返回错误数组中的单个字段

问题描述

我正在尝试在 angular7 项目中添加 yup。我已成功将其添加到我的组件中。

  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 个字段。当我更正时,它显示下一个字段。如何获取所有无效字段的列表。

谢谢

标签: javascriptangularreactjsyup

解决方案


是的 validate 函数接受第二个参数选项。通过{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))


      })
  }

推荐阅读