Tengo el siguiente escenario: tengo un componente aquí:
<div class="border shadow p-2"> <chart :config="barConfig" ref="linechart" /> </div>Ahora puedo acceder a él de esta manera:
let linechart = ref(null) La cuestión es que el gráfico de linechart no es solo un elemento HTML normal. Por lo general, haría algo como:
let linechart = ref<HTMLElement>()Pero en realidad es un componente. Puedo acceder a los métodos desde él con
linechart.value.update() Pero mecanografiado me arroja un error de que la update() no existe. He intentado esto:
import chart from "@/components/chart/chart.vue"; let linechart = ref<typeof chart>(); linechart.value.update();Pero todavía no hay suerte. ¿Hay alguna manera de obtener los métodos expuestos sin un error de mecanografiado?
Para ser claros, el método .update() funciona. Es solo mecanografiado que no puede encontrar el método. ¿Cómo lo arreglo?
lo descubrí En realidad está escrito en los documentos.
https://vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs
Esto funciona perfecto:
import chart from "@/components/chart/chart.vue"; let linechart = ref<InstanceType<typeof chart>>(); linechart.value?.update();