Injecting Dependencies in config() modules - AngularJS

前端 未结 4 2049
面向向阳花
面向向阳花 2020-11-29 18:45

Currently in app.js i have the following routes:

var gm = angular.module(\'gm\', [\'gm.services\',\'gm.directives\',\'gm.filters\',\'gm.controllers\',\'ngSan         


        
4条回答
  •  醉酒成梦
    2020-11-29 19:01

    1. angular.config only accepts Providers
    2. every service, factory etc are instances of Provider

    So to inject a service in config you just need to call the Provider of the service by adding 'Provider' to it's name.

    angular.module('myApp')
      .service('FooService', function(){
        //...etc
      })
      .config(function(FooServiceProvider){
        //...etc
      });
    

    According to the angularjs Provider documentation

    ... if you define a Factory recipe, an empty Provider type with the $get method set to your factory function is automatically created under the hood.

    So if you have a factory (or service) such as:

    .factory('myConfig', function(){
      return {
        hello: function(msg){
          console.log('hello ' + msg)
        }
      }
    })
    

    You first need to invoke your factory using the $get method before accessing the returned object:

    .config(function(myConfigProvider){
       myConfigProvider
         .$get()
         .hello('world');
    });
    

提交回复
热议问题