我有一个用打字稿写的角度控制器并以这种方式声明
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
我错过了什么吗?
答案 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>