Внедрение и использование службы в моем провайдере, а затем использование провайдера в блоке конфигурации

Я пытаюсь внедрить пользовательскую фабрику из одного модуля в пользовательский поставщик из другого модуля. Что я действительно хочу сделать, так это использовать собственную фабрику внутри блока конфигурации, но я не могу, поэтому я пытаюсь настроить провайдера, который использует настраиваемую фабрику, которая затем будет внедрена в конфигурацию.

Я пытался внедрить свою собственную фабрику в провайдера, но я не могу понять, что это правильно. Я не знаю, является ли это синтаксисом или, возможно, мой подход неверен. Мои вопросы:

1.) это вообще возможно?
2.) мой синтаксис правильный?

Вот фабрика:

.factory('myFactory', myFactory);
  myFactory.$inject = ['$q', '$http', 'Story'];
  function myFactory($q, $http) {

    return {
        getSomething: getSomething,
    }

    function getSomething() {

    }
}

Вот провайдер:

.provider('myProvider', function() {
    return {
        $get: function(myFactory) {
            function getStuff() {
                return myFactory.getSomething().then(function(data){
                    return data;
                })
            }
            return {
                stuff: getStuff
            }
        }
    }
})

Ошибка, которую я получаю, такова:

Cannot read property 'getSomething' of undefined

Это правильное использование поставщика? Я чувствую, что могу что-то упустить. Спасибо!

1 ответ

На этапе настройки вы не можете получить доступ к сервисам:

Во время начальной загрузки приложения, прежде чем Angular завершит создание всех служб, он настраивает и создает экземпляры всех поставщиков. Мы называем это этапом настройки жизненного цикла приложения. На этом этапе службы недоступны, поскольку они еще не созданы.

https://docs.angularjs.org/guide/providers

Другие вопросы по тегам