在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ Property '$router' does not exist on typ

Property '$router' does not exist on type

vue+typescript中,方法里調(diào)用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()
clipboard.png

回答
編輯回答
擱淺

1

//var VueRouter = require ('vue-router')
import Router from 'vue-router'
//Vue.use (VueRouter)
Vue.use(Router)
是否use 

2 這個this.指向什么 倆個方向排查

2017年1月8日 03:24
編輯回答
愿如初

clipboard.png
沒什么問題啊,會不會是你的this指向到了你的

clipboard.png

2017年2月12日 16:21
編輯回答
陌離殤

我沒用ts寫過,其他社區(qū)找到個答案
使用了這種方式this['router']


文檔里其實有說明的,需要對類型進行補充

vue-shim.d.ts文件

import Vue from 'vue'
import VueRouter from 'vue-router'
import {Route} from 'vue-router'
declare module "*.vue" {
  import Vue from "vue"
  export default Vue
}
// 擴充
declare module 'vue/types/vue' {
  interface Vue {
    $router: VueRouter,
    $route: Route
  }
}

這個時候已經(jīng)能正確編譯了,但是編輯器可能還有紅色報錯,這個應(yīng)該的改編輯器的設(shè)置(這我不太確定)?

2018年1月9日 06:00