2016-01-15 136 views
6

我很好奇我將如何去使用UI路由器的TypeScript解決方案。UI路由器的解決方案和TypeScript

.state("signin.notActivated", <ng.ui.IState> { 
        controller: "SigninCtrl", 
        controllerAs: "signin", 
        url: "/notActivated", 
        resolve: { 
         inProgress: function() { 
          return { formData : null } 
         } 
        } 
       }) 

在我的控制器中,我注入了我的決心。

constructor(public $state : angular.ui.IState, private inProgress) { 
      this.init();     
     } 

     private init =() => { 
      this.someData = this.inProgress.formData; // error 
     } 

我得到一個未知的提供者錯誤,因爲TypeScript試圖將它註冊爲服務。

enter image description here

可以這樣做?

+3

TypeScript沒有註冊任何東西。這被轉換爲純javascript,沒有別的。儘管我似乎錯過了你的錯誤。我在你的代碼中唯一注意到的是你對控制器類的字符串引用。通常我使用打字稿參考,而不是引號。 JavaScript是否如預期的那樣? –

+1

@Thomas你能解決這個問題嗎? – harishr

回答

1

嘗試注入這樣的:

static $inject = ['$state', 'inProgress']; 
constructor(public $state : angular.ui.IState, private inProgress) { 
    this.init();     
} 
+0

嘗試過,但它不工作 – harishr

0

確保你只能通過路由器調用控制器。直接從html通過ng-controller指令調用控制器(在你的情況下爲ng-controller="SigninCtrl as signin")不會注入inProgress,所以你最終會遇到這個錯誤。

相關問題