Angular Service Throwing" Unknown Provider"

时间:2016-06-10 20:17:20

标签: angularjs typescript

我在这上面转动我的车轮。我试图向我的控制器提供此服务的实例。当我运行它时,我得到了

  

JavaScript运行时错误:[$ injector:unpr]未知提供程序:   app.services.GithubServiceProvider< - app.services.GithubService< -   app.githubViewer.UserController

以下是各个部分:

  1. 服务本身

    module app.services {
    'use strict';
    
    export interface IGithubService {
        getUser(username: string): ng.IPromise<any>;
    }
    
    export class GithubService implements IGithubService {
    
        githubUrl: string = 'https://api.github.com/';
    
        static $inject = ['$http'];
        constructor(private $http: ng.IHttpService) {
    
        }
        getUser(username: string): angular.IPromise<any> {
            return this.$http.get(this.githubUrl + "users/" + username)
                .then(response => response.data);
        }
    }
    
    angular
        .module('app.services')
        .service('app.services.GithubService', GithubService);
    

    }

  2. 控制器

    module app.githubViewer {
    'use strict';
    
    interface IUserControllerScope { //scope definitions
    
    }
    
    class UserController implements IUserControllerScope {
    
        static $inject = ['app.services.GithubService', '$route'];
        constructor(githubService: app.services.IGithubService, $route: ng.route.IRouteService) {
       //...
        }
    
    }
    
    angular
        .module('app.githubViewer')
        .controller('app.githubViewer.UserController', UserController);
    

    }

  3. 更新,我在这里查看了this list常见问题,看起来它们都是有序的。代码如下:

    这是我的主要模块声明:

    ((): void => {
        'use strict';
    
        angular
            .module('app', [
                'app.core',
                'app.services',
                /*
                 *Feature Modules
                 */
                'app.githubViewer'
            ]);
    })();
    

    这是服务模块声明:

    ((): void => {
        'use strict';
    
        angular
            .module('app.services', []);
    })();
    

    我已经进行了三次检查,以确保将脚本添加到页面中。

    如果还有什么我应该在这里发布,请告诉我。我是Angular和TypeScript的初学者。

1 个答案:

答案 0 :(得分:1)

您必须将app.services声明为app.githubViewer

的依赖项
angular
    .module('app.githubViewer', ['app.services'])