2017-06-10 76 views
5

根據Angular文檔,我們只能在配置塊中注入提供者(不是實例)。 https://docs.angularjs.org/guide/module#module-loading-dependencies

但與此Angular相反,您可以注入$provide$inject,儘管它們是單例服務實例。

https://docs.angularjs.org/api/auto/service/$provide

+1

請閱讀以下提供者:https://docs.angularjs.org/guide/providers(Service,Factory,Provider等)。 (另外,angular中的所有服務都是單例實例)。 – ippi

+1

@ippi,我想問問題的人已經通過了文件。所以,如果不能回答,請不要激活人員。 #遠離 –

回答

1

這讓我好奇,所以我做了一些研究。以下是我發現:

  1. $噴油器不能被注入到配置塊
  2. $提供可以注入到配置塊

在代碼中,2原因是$provide投入providerInjector(配置塊中使用的注入器)之前的providerCache已創建。這可確保它始終是providerInjector的已知提供商。 https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671

這就是說,我不同意,能夠注入$provide到配置塊似乎矛盾關於什麼可以注入到此處所述的配置塊的一般規則:https://docs.angularjs.org/guide/module#module-loading-dependencies

即使它清楚地證明是什麼你可以在這裏做: https://docs.angularjs.org/guide/module#configuration-blocks

$provide可能只是一般規則的例外。

相關問題