You cannot set a form field before rendering a field associated with the value. You can use getFieldDecorator(id, options)
instead v-decorator="[id, options]"
to register it before render.
使用ant desion 给表单赋值的时候报这个错
原因:赋值的时候赋了多余的、表单里面不存在的字段
比如表单只有两个字段 username和password
而后端接口一般查询直接给你select * from users……返回一大坨无用数据:username,passwowrd,gender,createtime,birthday(多余的字段)……等等多余的你用不到的字段
这个时候你不管三七二十一一把塞进去this.form.setFieldsValue(接口返回的那个用户对象)就会报这个错
解决方法:
用这个api方法获取到当前页面所有待赋值的控件所绑定的字段
var 页面的所有控件绑定的值 = this.form.getFieldsValue()
var setValues = {}
for(var item in 页面的所有控件绑定的值){
setValues[item] = 你的所有数据item
}
此时setValues就等于你页面需要赋值的控件的值{username:‘张三’,‘password’:‘111111’}
再调用这个方法就好了 亲测可行不报错 this.form.setFieldsValue(setValues)
用上面的代码是用于页面有多个控件的时候动态赋值,如果你的表单只有两三个可以直接
this.form.setFieldsValue({
“字段1”:“value1”,
“字段2”:“value2”,
“字段3”:“value3”
})
就是这个原因,希望帮到您!
看到这里了求点个赞不过分吧!!!!