簡體   English   中英

為什么Angular允許你將$ provide服務注入配置塊?

[英]Why does Angular let you inject the $provide service into config blocks?

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

但與此相反,Angular允許您注入$provide$inject ,盡管它們是單例服務實例。

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

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

  1. $ injector不能注入配置塊
  2. $ provide可以注入配置塊

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

也就是說,我確實同意能夠在配置塊中注入$provide似乎與可以注入此處所述配置塊的一般規則相矛盾: https//docs.angularjs.org/guide/module#module-loading-依賴

即使它清楚地證明了你可以在這里做的事情: https//docs.angularjs.org/guide/module#configuration-blocks

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM