javascript - Angular 16+ 中的注入(inject)上下文是什么

标签 javascript angular angular-dependency-injection

我面临一个名为“注入(inject)上下文”的术语,并试图弄清楚它实际上是什么。 因为在 Angular 上我们有以下与注入(inject)上下文相关的东西(如下所列):

  • EnvironmentInjector#runInContext
  • injectionContext ;
  • runInInjectionContext;
  • 注入(inject)();

我发现 inject() - 可以从注入(inject)上下文中调用(作为构造函数呈现;工厂函数、字段初始值设定项)

我试图调查 Ang( https://angular.io/api/core/EnvironmentInjector ) - 但我根本不清楚。 因此,如果有人能够阐明与此注入(inject)上下文以某种方式相关的其他事物,并提供我们何时应该使用它以及用于什么用途的字面用例,那就太好了。

最佳答案

注入(inject)上下文是可在应用程序组件树中的特定点注入(inject)的一组提供程序。它由当前正在实例化的组件及其父组件决定。当组件被实例化时,注入(inject)器会在组件自己的注入(inject)器中查找提供程序,然后在其父注入(inject)器中查找提供程序,在组件树中递归地向上查找,直到到达根注入(inject)器。

注入(inject)上下文很重要,因为它决定了在组件树中的给定点哪些提供程序可用于注入(inject)。如果提供者在注入(inject)上下文中不可用,则当组件或服务尝试注入(inject)它时将引发错误。因此,在组件树中的适当级别定义提供程序非常重要,以确保它们在需要时可用。

如果您想扩展有关 Angular 中依赖注入(inject)在幕后如何工作的知识,您可以观看此 video时间 32:00。

希望有帮助。

关于javascript - Angular 16+ 中的注入(inject)上下文是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76237681/

相关文章:

Angular:收集的元数据包含将在运行时报告的错误:不支持 Lambda

javascript - 创建小时数组 : 00:00, 01 :00, 02:00

JavaScript 未实现错误

javascript - 路由中的 Ember.js 数据未显示在模板中

javascript - 如何在 typescript 中将数组的所有成员初始化为相同的值?

angular - @Injectable 的语义(providedIn : 'root' )?

javascript - 通过 Javascript 在复选框更改时隐藏或显示中继器内的跨度

javascript - 在非 InputElement 上调用 Angular2 单击事件

angular - SystemJS 不会从 node_modules 加载 angular2