В настоящее время я работаю над настраиваемой проверкой и хотел бы, если возможно, получить доступ к дочерним компонентам и вызвать там метод.
Контейнер формы
<template>
<form @submit.prevent="handleSubmit">
<slot></slot>
</form>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
setup(props, { slots }) {
const validate = (): boolean => {
if (slots.default) {
slots.default().forEach((vNode) => {
if (vNode.props && vNode.props.rules) {
if (vNode.component) {
vNode.component.emit('validate');
}
}
});
}
return false;
};
const handleSubmit = (ev: any): void => {
validate();
};
return {
handleSubmit,
};
},
});
</script>
Когда я вызываю slot.default()
, я получаю правильный список дочерних компонентов и вижу их свойства. Однако vNode.component
всегда null
Мой код основан на этом пример, но это для vue 2.
Если бы кто-то мог мне помочь, это было бы здорово, или это вообще возможно.