TypeScript Angular - 静态$ inject ['customServiceName']的未知提供者

时间:2015-03-10 02:20:15

标签: angularjs typescript

在此the repo

在控制器中,我试图注入UserService

 class UserDetailController implements IUserDetailScope {

        static $inject = ['app.core.services.UserService'];              // static injection

        constructor(userService: app.core.services.IUserService) {

但它在浏览器上失败了#39;控制台:

  

未知提供者:app.core.services.UserServiceProvider< -   app.core.services.UserService< - UserDetailController

你能说出原因吗?

2 个答案:

答案 0 :(得分:1)

尝试上套管" U"在构造函数中的UserService中。当angular进入inject时,它只是匹配服务的名称,并且它匹配大小写。

修改

刚刚意识到你正在使用$ inject,我会留下第一个回复以防其他人找到它。

您没有向我们展示注册服务的代码,但通常是下一个罪魁祸首。我猜您是否已将其注册为“UserService'”,而不是' app.core.services.UserService',或者您正在执行应用。 controller()而不是App.service()注册。这是另外两个想到的罪魁祸首。

答案 1 :(得分:0)

你正在编写整个命名空间来注入一个服务,但我有一个简洁的方法

    module portal {
      var app =angular.module('fooModule',[]);
          app.service(services);
          app.controller(controllers);

    }

    module portal.services {

       //all your services will go under this namespace
      export class fooService{
              //service body here
           }
    }


     module portal.controller{

      export class UserDetailController implements IUserDetailScope {

          static $inject = ['UserService'];                                 

         constructor(userService: potal.services.IUserService) {

      }
     }