当前位置:首页 > 技术分享 > 前端开发 > 正文内容

Ant design Vue 实现动态表单及验证

admin2年前 (2022-10-17)前端开发2090
<template>
<a-form-model
      ref="dynamicValidateForm"
      :model="dynamicValidateForm"
      v-bind="formItemLayoutWithOutLabel"
    >
      <div v-for="(domain, index) in dynamicValidateForm.domains" :key="domain.key">
        <a-form-model-item
          :prop="'domains.' + index + '.info'"
          :rules="{
            required: true,
            message: '状态说明不能为空',
            trigger: 'blur',
          }"
          :style="{width: '30%', 'margin-right': '20px', 'display': 'inline-block'}"
        >
          <a-input
            v-model="domain.info"
            placeholder="请输入状态说明"
          />
        </a-form-model-item>
        <a-form-model-item
          :prop="'domains.' + index + '.val'"
          :rules="{
            required: true,
            message: '状态说明参数值不能为空',
            trigger: 'blur',
          }"
          :style="{width: '30%', 'margin-right': '20px', 'display': 'inline-block'}"
        >
          <a-input-number
            v-model="domain.val"
            :min="0"
            :max="9999999999"
          />
        </a-form-model-item>
        <span
          v-if="dynamicValidateForm.domains.length > 1"
          class="dynamic-delete-button"
          :disabled="dynamicValidateForm.domains.length === 1"
          @click="removeDomain(domain)"
        >
          <i class="iconfont icon-stop" />
        </span>
      </div>
      <a-row v-if="isError" :gutter="24">
        <a-col :span="22" :offset="2" class="red">{{ tips }}</a-col>
      </a-row>
    </a-form-model>
</template>
<script>
export default {
  name: 'Test',
  data() {
    return {
      formData: {
        key: null,
        unit: undefined,
        name: undefined,
        statusList: [{
          key: 0,
          info: '',
          val: ''
        }]
      },
      labelCol: { span: 5 },
      wrapperCol: { span: 17 },
      dynamicValidateForm: {domains: []}
    }
  },
  methods: {
    removeDomain(item) {
      let index = this.dynamicValidateForm.domains.indexOf(item)
      if (index !== -1) {
        this.dynamicValidateForm.domains.splice(index, 1)
      }
    },
    addDomain() {
      this.dynamicValidateForm.domains.push({
        info: '',
        val: '',
        key: Date.now()
      })
      this.isError = false
    }
    }
}
</script>

Tips: 动态表单不能被a-row包裹,a-form-model上不要写rule,写在a-form-model-item上

版权声明:本文由沐萱草的笔记发布,如需转载请注明出处。

本文链接:https://mxcst.com/?id=8

“Ant design Vue 实现动态表单及验证” 的相关文章

modules[moduleId] is undefined error

modules[moduleId] is undefined error

modules[moduleId] is undefined error应该是webpack的一个bug, 具体修复可以修改配置,使用:optimization: { concatenateModules: false, providedExports:&nb...

Angular国际化,懒加载,动态添加Base

Angular国际化,懒加载,动态添加Base

Angular做了国际化之后会生成不同语言的目录,加上在js文件是上传到后台项目中,通过域名加载js,js文件路径比较深,但js的加载是默认从根目录开始。所以懒加载模块的时候总是报404错。经过查阅资料发现可以在模块加载前动态添加一个<base> tag,模块加载完成后再移除。impor...