首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在子vue组件中声明方法?

如何在子vue组件中声明方法?
EN

Stack Overflow用户
提问于 2021-06-25 13:55:02
回答 1查看 29关注 0票数 0

child.vue:

代码语言:javascript
复制
<script lang="ts">
import { Vue } from 'vue-property-decorator'

@Component
export default class Child extends Vue {
  public func(): void {
    //
  }
}
</script>

parent.vue:

代码语言:javascript
复制
<template>
  <child ref="child" />
</template>

<script lang="ts">
  import { Vue } from 'vue-property-decorator'
  import Child from './child.vue'

  export default Parent extends Vue {
    public create (): void {
    (this.$refs.child as typeof Child).func()
  }
}

TSLint错误:

代码语言:javascript
复制
Property 'func' does not exist on type 'Component<DefaultData<never>, DefaultMethods<never>, DefaultComputed, DefaultProps>'.

如何让“typeof Child”被检测为类Child?我知道创建一个额外的接口,然后导入它可以解决这个问题,但是有没有其他方法呢?

EN

回答 1

Stack Overflow用户

发布于 2021-06-25 15:25:51

首先:您忘记了父组件上的@Component装饰器。它不会正确地输入它。

第二个(可选):您可以使用@Ref装饰器来保存ref的类型化引用。

第三:您不需要typeof关键字。

代码语言:javascript
复制
@Ref('child')
readonly childComponent: Child

created () {
   // Correctly typed
   this.childComponent.func()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68126130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档