2016-03-01 31 views
3

我在我的AngularJS代碼如下:

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

然而,它拋出我的一個錯誤:

錯誤TS2339:房產 '當前' 的類型不存在 '{}'。

你有什麼想法如何解決這個問題?


UPDATE

我已經試過這樣:

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

沒有任何成功。

+0

也許您需要定義一個名爲'get'的函數,該函數返回一個在該接口上具有屬性'current'的對象。 –

+0

查看注入器的文檔get方法應該已經返回任何文檔。 http://definitelytyped.org/docs/oclazyload--oclazyload/interfaces/ng.auto.iinjectorservice.html – toskv

回答

6

$injectorget()方法返回的值是任何..這沒有current財產......所以我們只需要斷言編譯器,我們知道將返回(而不是any

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

另一個符號

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

和簡要概述IInjectorService

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

我不知道我可以使用這種語法。這真的很好!謝謝! – uksz