UI路由器的Resolve和TypeScript

时间:2016-01-15 22:38:43

标签: typescript angular-ui-router

我很好奇我将如何使用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

可以这样做吗?

2 个答案:

答案 0 :(得分:1)

尝试像这样注入:

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

答案 1 :(得分:0)

确保仅通过路由器调用控制器。直接从html到ng-controller指令(在你的情况下为ng-controller="SigninCtrl as signin")调用控制器将不会注入inProgress,因此你将最终出现此错误。