无法在typescript中更改控制器创建的语法

时间:2014-10-12 20:42:09

标签: angularjs typescript

我有一个用打字稿写的角度控制器并以这种方式声明

angular.module('myApp').controller("gestioneProgetto",     
 ["$scope", "PalmariService", "SoluzioniService", "ProgettoService", "WmsService", "BingService", "$modal", "SettoreService",  
  ($scope, dispositivi, soluzioni, progetti, wms, bing, modal, settore)     
=> new Palmare.Controllers.gestioneProgetto($scope, dispositivi, soluzioni, progetti, wms, bing, modal, settore)])

并且工作正常。我想改变从这里删除di引用,转移到

static $inject = ["$scope", "PalmariService", "SoluzioniService", "ProgettoService"
                 , "WmsService", "BingService", "$modal", "SettoreService"]; 

并改为

angular.module('myApp').controller("gestioneProgetto", ($scope, dispositivi, soluzioni, progetti, wms, bing, modal, settore)
    => new Palmare.Controllers.gestioneProgetto($scope, dispositivi, soluzioni, progetti, wms, bing, modal, settore));

这种方法适用于所有工厂我的更改,但尝试使用第一个控制器执行此操作我获取消息

  

错误:[$ injector:unpr]未知提供者:dispositiviProvider< - dispositivi

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

如果您的定义是这样的:

module Palmare.Controllers
{
    export class gestioneProgetto
    {
        static $inject = ["$scope", "PalmariService", "SoluzioniService", ...]; 
        ...

这适用于角度:

angular
  .module('myApp')
  .controller("gestioneProgetto", Palmare.Controllers.gestioneProgetto);

答案 1 :(得分:1)

要添加Radim的正确答案,之所以会发生这种情况,是因为Angular正在查找作为$inject的第二个参数传递的对象的controller属性。 / p>

在这种情况下,你在这里的论点是:

angular
    .module('myApp')
    .controller("gestioneProgetto", ($scope, ... settore) => new Palmare.Controllers.gestioneProgetto($scope, ... settore));

是一个没有$inject属性的匿名函数。如果您传递控制器构造函数本身,那么构造函数 具有$inject属性(因为类的static成员在构造函数本身上显示为属性)。 / p>