De acordo com a documentação Angular, só podemos injetar Providers (não instâncias) em blocos de configuração. https://docs.angularjs.org/guide/module#module-loading-dependencies
Mas ao contrário disso Angular permite injetar $provide
ou $inject
apesar deles serem instâncias de serviço singleton.
https://docs.angularjs.org/api/auto/service/$provide
Respostas:
1 para resposta № 1Isso me deixou curioso, então fiz algumas pesquisas. Aqui está o que eu encontrei:
- $ injector não pode ser injetado em blocos de configuração
- $ fornecer pode ser injetado em blocos de configuração
No código, a razão para 2 é que $provide
é colocado no providerCache
antes de o providerInjector
(o injetor usado nos blocos de configuração) é criado. Isso garante que sempre será um provedor conhecido para o providerInjector
. https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671
Dito isto, eu concordo que poder injetar $provide
em blocos de configuração parece contradizer a regra geral sobre o que pode ser injetado nos blocos de configuração declarados aqui: https://docs.angularjs.org/guide/module#module-loading-dependencies
Mesmo que seja claramente demonstrado que é algo que você pode fazer aqui: https://docs.angularjs.org/guide/module#configuration-blocks
$provide
pode ser a única exceção à regra geral.