You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

封装vue-tel-input组件在Vue3+TS环境下无法输入的问题求助

问题解决:vue-tel-input封装后无法输入的问题

问题原因

你封装组件时对vue-tel-input的input事件处理错误:该组件的input事件返回的是直接处理后的电话号码字符串,而非标准DOM输入事件对象,所以$event.target.value会是undefined,导致无法正确更新父组件的绑定值。同时在TypeScript环境下未明确Props类型,也可能引发隐性类型校验问题。

修复后的封装组件代码

修改components/NPMPackages/VueTelInput/Index.vue:

<script setup lang="ts">
import { VueTelInput } from 'vue-tel-input';
import 'vue-tel-input/vue-tel-input.css';

// 明确Props与Emits的类型,符合TS规范
const props = defineProps<{
  modelValue: string
}>()

const emit = defineEmits<{
  'update:modelValue': [value: string]
}>()
</script>
<template>
  <VueTelInput
    :value="modelValue"
    <!-- 直接使用事件返回的电话号码值,而非DOM事件对象 -->
    @input="$emit('update:modelValue', $event)"
  />
</template>

验证说明

修改后,父组件App.vue的原有代码无需改动即可正常工作。此时vue-tel-input触发input事件时,会将处理后的电话号码直接传递给父组件的phone变量,输入框即可正常输入和显示内容。

内容的提问来源于stack exchange,提问作者Neha Soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:22:13