【发布时间】:2021-12-17 23:33:45
【问题描述】:
我有一个像这样动态渲染组件的组件:
<div class="row" v-for="(formField, index) in form.formFields" :key="index">
<boolean-form-item
v-if="formField.fieldType == 'Boolean'"
v-model="form.formFields[index]"
:ref="formField.configuration?.key"
></boolean-form-item>
<numeric-form-item
v-if="formField.fieldType == 'Number'"
v-model="form.formFields[index]"
:ref="formField.configuration?.key"
></numeric-form-item>
<dropdown-form-item
v-if="formField.fieldType == 'Dropdown'"
v-model="form.formFields[index]"
:ref="formField.configuration?.key"
></dropdown-form-item>
</div>
每个表单项类型都有一个我想要访问的 validate() 方法。问题是,当使用 $ref 访问它们时,类型是未知的,并且 typescript 会抛出一个错误。
validate() {
this.form.formFields.forEach((field) => {
var key = "";
if (field.configuration) {
key = field.configuration.key;
}
console.log(this.$refs[key].validate()); // <<--- Error Object is of type 'unknown'
});
},
如何访问组件的动态创建的子组件并执行 validate() 方法?
【问题讨论】:
-
您确定 key 不是空字符串,例如
field.configuration.key没有定义?旁注,不要再使用var,在这种情况下let将是正确的关键字。除了你仍然以 IE
标签: typescript vue.js vue-component vuejs3