0

当子句内的两个对象anyOf共享一个同名字段时,该字段将被验证两次,每个替代项一次。即使对于当前未选择的项目,这也会显示错误消息,这会让人感到困惑。

例如,对于以下架构:

{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "title": "Item type A",
      "properties": {
        "sharedNumericField": {
          "type": "string",
          "title": "Shared numeric field",
          "pattern": "^[0-9]*$"
        }
      }
    },
    {
      "type": "object",
      "title": "Item type B",
      "properties": {
        "sharedNumericField": {
          "type": "string",
          "title": "Shared numeric field",
          "pattern": "^[0-9]*$"
        }
      }
    }
  ]
}

每当我在 中输入非数字字符sharedNumericField时,验证错误 should match pattern "^[0-9]*$"都会显示两次。

这是一个沙箱

我只想显示当前正在显示的项目的错误消息。有没有一种简单的方法可以做到这一点?

我能想到的唯一方法是强制向每个对象注入一个不同的隐藏值,formData根据该值识别当前选择的项目,然后使用transformErrors函数过滤掉未选择的项目 - 但我真的希望有一个更干净的方法:)

4

0 回答 0