Это связано с использованием Typescript. Поскольку вы не указали, какой тип this.$refs.validation_check
, он будет искать по умолчанию, как будто вы ошиблись: 'Vue | Element | Vue[] | Element[]'
и правильно сообщает вам, что validate()
не существует ни на одном из них.
Vuetify не (по крайней мере, на данный момент) не имеет поддержки машинописного текста для своих элементов, поэтому вам нужно будет создать свой собственный тип. Я предлагаю это, а не, например, использовать any
. Это противоречит цели TypeScript ...
Итак, я предлагаю следующее: создайте свой тип, назовите его так, как вы sh:
export type VuetifyForm = Vue & { validate: () => void };
Если вы хотите добавить больше предоставленных функций, вы можете связать их с &
, например:
export type VuetifyForm = Vue & { validate: () => void } & { reset: () => void }
... столько, сколько вам нужно из функций (или всех из них).
Затем в ваш компонент, импортируйте тип и укажите this.$refs.validation_check
в качестве этого типа, и ваша ошибка должна исчезнуть:
import { VuetifyForm } from 'your/path';
// ....
submit() {
if ((this.$refs.validation_check as VuetifyForm).validate()) {
this.success = true;
}
// ...
}