我的角度版本是1.4.8。
我有一个用es-6类定义的服务
class OrdersService {
...
}
export default angular.module('services.orders', [])
.service('ordersService', OrdersService)
.name;
我想将它注入其他模块
import ordersService from 'orders.service'
function routes($stateProvider, ordersService) {
....
}
routes.$inject = ['$stateProvider', 'ordersService'];
export default angular
.module('orders',[ordersService])
.config(routes)
但是Angular抛出了一个例外,说“无法找到提供商订单服务'”。但添加尾巴'提供商'服务使它发挥作用。
routes.$inject = ['$stateProvider', 'ordersServiceProvider'];
在这篇文章中,作者不会添加但仍然有用。 http://angular-tips.com/blog/2015/06/using-angular-1-dot-x-with-es6-and-webpack/
class RandomNames {
....
}
export default angular.module('services.random-names', [])
.service('randomNames', RandomNames)
.name;
import randomNames from 'randomNames'
export default class HomeController {
....
}
HomeController.$inject = ['randomNames'];
为什么我需要添加'提供商'服务?是否有api doc来声明这个?
答案 0 :(得分:4)
在角度config
阶段,您只能使用提供者。使用.service
(或.factory
)是创建提供者的简写。您也可以使用.provder
,但是您必须更明确地创建提供程序。
提供商和.config
阶段用于配置在应用中使用的服务。由于您没有进行任何配置,因此将orderService
注入.config
无效。
也许你可以把它注入.run
答案 1 :(得分:0)
您可以使用ngAnotate而不是手动执行此操作。
在构造函数中添加特殊注释:
export default class HomeController {
/*@ngInject*/
constructor(randomNames) {
this.randomNames = randomNames;
}
}
然后在构建过程中添加ng-annotate插件,它将为您描述注射。