gpt4 book ai didi

javascript - 为什么 Angular 让你将 $provide 服务注入(inject)到配置 block 中?

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:14 25 4
gpt4 key购买 nike

根据 Angular 文档,我们只能在配置 block 中注入(inject)提供者(而不是实例)。 https://docs.angularjs.org/guide/module#module-loading-dependencies

但与此相反,Angular 允许您注入(inject) $provide$inject,尽管它们是单例服务实例。

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

最佳答案

这让我很好奇,所以我做了一些研究。这是我发现的:

  1. $injector 不能注入(inject)配置 block
  2. $provide 可以注入(inject)配置 block

在代码中,2的原因是$provideproviderInjector(配置 block 中使用的注入(inject)器)之前被放入providerCache ) 被 build 。这确保它始终是 providerInjector 的已知提供者。 https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671

也就是说,我确实同意能够将 $provide 注入(inject)到配置 block 中似乎与关于可以将什么注入(inject)到配置 block 中的一般规则相矛盾:https://docs.angularjs.org/guide/module#module-loading-dependencies

尽管它已被清楚地证明是您可以在此处执行的操作: https://docs.angularjs.org/guide/module#configuration-blocks

$provide 可能只是一般规则的一个异常(exception)。

关于javascript - 为什么 Angular 让你将 $provide 服务注入(inject)到配置 block 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com