Внедрение услуги в другую службу в angularJS

Можно ли вводить одну услугу в другую службу в angularJS?

Ответ 1

Да. следуйте правилу регулярной инъекции в угловом.

app.service('service1', function(){});

//Inject service1 into service2
app.service('service2',function(service1){});

Благодаря @simon. Лучше использовать инъекцию массива, чтобы избежать минимизации проблемы.

  app.service('service2',['service1', function(service1) {}]);

Ответ 2

Да. Как это (это поставщик, но то же самое относится)

    module.provider('SomeService', function () {


    this.$get = ['$q','$db','$rootScope', '$timeout', 
                function($q,$db,$rootScope, $timeout) {
          return reval;
    }
    });

В этом примере $db - это служба, объявленная в другом месте приложения и вводится в функцию поставщика $get.

Ответ 3

Чтобы избежать путаницы, я думаю, что также стоит упомянуть, что если вы используете какие-либо другие службы (например, $http, $cookie, $state) в вашем childService, вам также необходимо явно объявить их.

например.

function() {
  var childService = function($http, $cookies, parentService) {

  // Methods inherited
  this.method1Inherited = parentService.method1();
  this.method2Inherited = parentService.method2();

  // You can always add more functionality to your child service

  angular.module("app").service("childService", ["$http", "$cookies", "parentService", childService]);

}());

Вы можете объявить службы, которые вы используете внутри своего ребенка, в массиве, а затем их автоматически вводить или вводить отдельно с помощью аннотации $injection:

childService.$inject = ["$http", "$cookies", "parentService"]; 
angular.module("app").service("childService ", childService );