2016-01-15 21 views
6

Sono curioso di sapere come utilizzare la risoluzione del router UI con TypeScript.Risolvi e TypeScript del router UI

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

Nel mio controller, ho iniettato la mia risoluzione.

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

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

Viene visualizzato un errore del provider sconosciuto, poiché TypeScript sta tentando di registrarlo come servizio.

enter image description here

si può fare?

+3

TypeScript non sta registrando nulla. Questo è traspiled a plain javascript, nient'altro. Mi sembra che manchi il tuo errore. L'unica cosa che noto nel codice è il riferimento alla stringa della classe controller. Normalmente uso il riferimento al dattiloscritto, cioè senza le virgolette. Il javascript è come previsto? –

+1

@Thomas sei riuscito a risolvere questo problema? – harishr

risposta

1

Prova l'iniezione in questo modo:

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

provato ma non funziona – harishr

0

assicurarsi che si sta invocando il controller solo attraverso il router. Invocare il controller direttamente dalla direttiva html tramite ng-controller (ng-controller="SigninCtrl as signin" nel tuo caso) non verrà iniettato inprogress e così finirai con questo errore.

Problemi correlati