Vue und vue-Immobilien-Dekorateur. TS-Fehler im BeforeRouteUpdate-Hook


Umriss

Ich schreibe eine Anwendung mit Vue 2/Typescript und Vue-Property-Decorator. In meiner Komponente verwende ich beforeRouteEnter/beforeRouteUpdate-Hooks. Meine Komponente hat die Methode findProjects, und ich möchte diese Methode in meinem beforeRouteUpdate- Hook aufrufen.

Meine Komponente:

import { Component, Vue, Mixins, Watch } from 'vue-property-decorator'
...
export default class ProjectSandboxTs extends Mixins(GlobalFilterMixin({})) {
  created() {...
  }

  clearInput() {...
  }

  findProjects() {
    const filter: IFilter = { ...this.modalFilterValues, ...this.filterValues }
    this.filterProjects(filter)
    this.displayProjects()
    this.isEmpty = this.filteredData.length === 0
  }

  filterProjects(filter: IFilter) {...
  }

Aber wenn ich versuche, die Methode der Komponente in meinem Hook aufzurufen, erhalte ich einen Schreibfehler: Eigenschaft „findProjects“ existiert nicht auf Typ „Vue“.

beforeRouteUpdate(to, from, next) {
  if (!isEqual(to.query, from.query)) {
    this.findProjects() // <== Property 'findProjects' does not exist on type 'Vue'
  }
  next()
}

Irgendwelche Ideen, wie man es repariert?

Adam Orłowski

Dies liegt daran, dass Typoskript nicht weiß, um welche Art von Instanz thises sich handeln wird. Versuchen Sie so etwas:

(this as ProjectSandboxTs).findProjects()

Verwandte Artikel


vue-router beforeRouteUpdate-Hook kann nicht auf `this` zugreifen

Sie sind Ich erstelle eine Vue.js-Anwendung mit vue-router. Aus dem Dokument kann ich lesen, dass beforeRouteUpdateich im Hook über das Schlüsselwort vollen Zugriff auf die Komponente habe this: Beachten Sie, dass beforeRouteEnter der einzige Guard ist, der di

Volar und vue-tsc zeigen unterschiedliche TS-Fehler

Eduard In meinem Vite + Vue 3 + TypeScript-Projekt habe ich vue-tsc so konfiguriert , dass es während der Entwicklung im Überwachungsmodus ausgeführt wird . Ich verwende VS-Code mit Volar . Jetzt habe ich einerseits alle meine TS-Fehler in der Konsole gedruckt