Property '$router' does not exist on type
vue+typescript中,方法里调用this.$router 报错
Property '$router' does not exist on type 'Close'
请问如何解决?
close.vue
<template>
<div class="close-wrap"
:class="{'header-close': closeType === 'header'}"
@click="back">
<i class="close icon iconfont icon-xiangzuo1"></i>
</div>
</template>
<script lang="ts">
import {Vue, Component, Prop, Inject} from 'vue-property-decorator'
@Component({})
export default class Close extends Vue {
// props
@Prop({default: ''})
closeType: 'icon'
// methods
back(): void{
console.log(this); // 打印出是Close实例,其上能找到$router属性
// 这里报错:Property '$router' does not exist on type 'Close'
this.$router.go(-1);
}
}
</script>
// 打印出是Close实例,其上能找到$router属性,并通过原型链往上找也能找到go()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我没用ts写过,其他社区找到个答案
使用了这种方式
this['router']
文档里其实有说明的,需要对类型进行补充
vue-shim.d.ts文件
这个时候已经能正确编译了,但是编辑器可能还有红色报错,这个应该的改编辑器的设置(这我不太确定)?
在其它类(组件)打印
this
也没有对应配置的$router
、和$axios
, 使用没问题,但是编译器报错(下划红波浪线)。。。无法解决。。真难用。用一个变量接收 router 在访问 变量里的options 就行了
我尝试网上搜到的this.$router['option']和this['router']以及interface的方法都还是会红线,借用$ref保红线的解决方法套用,解决了
导出的时候使用
Vue.extend()
创建并导出子类看起来应该是Vetur插件的问题,实际eslint是没问题的。
1
2 这个this.指向什么 俩个方向排查
没什么问题啊,会不会是你的this指向到了你的
楼主解决了吗,求方法