当子句内的两个对象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函数过滤掉未选择的项目 - 但我真的希望有一个更干净的方法:)