简体   繁体   English

ElementUI 使用子组件进行验证

[英]ElementUI doing validation with Sub Component

How to validate a sub component inside a form?如何验证表单内的子组件?

In the form component I have the sub component:在表单组件中,我有子组件:

<template>
  <el-form :model="value">
    <el-form-item 
      prop="name" 
      :rules="{ required: true, message: 'Necessary', trigger: 'blur' }"
    >
      <el-input v-model="value.name">
    </el-form-item>
    <ZipCode v-model="value.zipcode" />
  </el-form>
</template>
<script>
export default {
  props: {
    value: { 
      type: Object, 
      default: () => { 
        return { 
          name: null, 
          zipcode: { code: null, local: null }
        } 
      }
    }
  }
}
</script>

And in the ZipCode component:在 ZipCode 组件中:

<template>
  <el-form-item 
    prop="code" 
    :rules="{ required: true, message: 'Necessary', trigger: 'blur' }"
  >
    <el-input v-model="value.code">
  </el-form-item>

  <el-form-item 
    prop="local" 
    :rules="{ required: true, message: 'Necessary', trigger: 'blur' }"
  >
    <el-input v-model="value.local">
  </el-form-item>
</template>
<script>
export default {
  props: {
    value: { 
      type: Object, 
      default: () => { return { code: null, local: null } } 
    }
  }
}
</script>

The validation on the form component is working as expected but not the validation on the sub component.表单组件的验证按预期工作,但子组件的验证没有。 If the field has data, still gives the error that data is required.如果该字段有数据,仍然给出需要数据的错误。 This false validation is also working from the form component.这种错误验证也适用于表单组件。

So problem might be on the "prop" field.所以问题可能出在“道具”领域。 If change the prop to "value.code" or "zipcode.code" it gives the error "Error: please transfer a valid prop path to form item".如果将道具更改为“value.code”或“zipcode.code”,则会出现错误“错误:请将有效的道具路径传输到表单项”。

What might be the issue?可能是什么问题? Thank you for any help.感谢您的任何帮助。

The rule should have the type as an 'object' with a fields property for each sub rule.该规则的类型应为“对象”,每个子规则都有一个字段属性。

  <el-form :model="value" :rules="
    {
      name: [
        { required: true, message: 'Please input name', trigger: 'blur' }
      ],
      zipcode: {
        type: 'object',
        required: true,
        fields: {
          code: { type: 'string', required: true, len: 8, message: 'invalid zip' },
          local: { type: 'string', required: true, message: 'required' }
        }
      }
    }
  ">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM