为什么我必须添加尾部'提供商'到服务名称,当我使用es6时

Why I must add the tail 'Provider' to Service Name, when I used es6

本文关键字:es6 提供商 添加 尾部 为什么 服务      更新时间:2023-09-26

我的angular版本是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抛出一个异常,称"找不到提供商orderService"。但在服务中添加尾部"提供者"使其发挥了作用。

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文档可以声明吗?

在角度config阶段,您只能使用提供程序。使用.service(或.factory)是创建提供程序的简写。您也可以使用.provder,但必须更明确地创建提供程序。

提供者和.config阶段用于配置应用程序中使用的服务。由于您没有进行任何配置,因此将orderService注入.config不会带来任何好处。

也许您可以将其注入.run

您可以使用ngAntate而不是手动执行此操作。

添加对您的构造函数的特别评论:

export default class HomeController {
   /*@ngInject*/
   constructor(randomNames) {
     this.randomNames = randomNames;
   }
}

然后将ng注释插件添加到您的构建过程中,它将为您描述注入。