Мне стало любопытно, поэтому я провел небольшое исследование. Вот что я нашел:
- $injector не может быть введен в блоки конфигурации
- $provide может быть введен в блоки конфигурации
В коде причина 2 заключается в том, что $provide
помещается в providerCache
до того, как будет создан providerInjector
(инжектор, используемый в блоках конфигурации). Это гарантирует, что он всегда будет известным поставщиком для providerInjector
. https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671
Тем не менее, я согласен с тем, что возможность вводить $provide
в блоки конфигурации, похоже, противоречит общему правилу относительно того, что можно вводить в блоки конфигурации, изложенным здесь: https://docs.angularjs.org/guide/module#зависимостизагрузкимодулей
Несмотря на то, что это явно продемонстрировано здесь: https://docs.angularjs.org/guide/module#configuration-blocks
$provide
может быть единственным исключением из общего правила.
person
Benny Johansson
schedule
15.07.2017