Website-Suche

angularjs - Wie kann man $injector Typ-Fehler in TypeScript loswerden?


Ich habe Folgendes in meinem AngularJS-Code:

this.$injector.get('$state').current.name !== 'login'

Allerdings wirft es mir einen Fehler aus:

Fehler TS2339: Die Eigenschaft 'current' existiert nicht auf Typ '{}'.

Hast du irgendeine Idee, wie man dieses Problem lösen kann?

AKTUALISIERUNG

Ich habe dies versucht:

export namespace NewInjector extends angular.auto.IInjectorService {
    current: any;
};

ohne jeglichen Erfolg.

Antwort #1

Der Wert, der von der get()-Methode des $injector zurückgegeben wird, ist any.. der keine current-Eigenschaft hat... also müssen wir nur den Compiler davon überzeugen, dass wir wissen, was zurückgegeben wird (anstatt any)

var state = this.$injector.get('$state') as ng.ui.IStateService;
var isNotLogin = state.current.name !== "login";
...

Eine andere Notation

var state = this.$injector.get<ng.ui.IStateService>('$state');

Und eine kurze Übersicht über den IInjectorService

interface IInjectorService {
    ...
    get<T>(name: string, caller?: string): T;
    ...

Verwandte Artikel