2025年@Inject与@Injectable

@Inject与@Injectable在 Angular 框架中 经常会使用到 Inject 与 Injectable 这两个装饰器 它们与框架的依赖注入系统息息相关 什么是 Angular Injector Injector 注入器 主要工作是负责向服务与组件 指令等注入依赖 Injector 主要通过 Angular provider 中的 token 进行查找需要注入的依赖 Angular

大家好,我是讯享网,很高兴认识大家。

在Angular框架中,经常会使用到@Inject与@Injectable这两个装饰器。它们与框架的依赖注入系统息息相关。

什么是Angular Injector

Injector,注入器。主要工作是负责向服务与组件、指令等注入依赖。Injector主要通过Angular provider中的token进行查找需要注入的依赖。Angular Provider中提供了依赖的相关信息,比如token,创建实例的方式等。Injector通过这些信息进行创建实例,并负责把实例注入到服务、组件、指令中。

什么时候创建Angular Injector

首先,在根模块启动的时候会创建一个注入器,此时这个注入器作用于全局。整个应用会创建一棵组件树,appcomponent为根组件。同样,injector也会配合创建注入器树,为每个组件维护需要注入的内容。

怎么注册需要注入的依赖


讯享网

可以使用Providers,具体使用provide:[Aservice,Bservice],复杂一点的如providers:[{provide:xxx,useValue:xxx}],还可以useClass,useFactory,以及depths等。这里不再具体展开。

@Injectable

@Injectable装饰器是告诉Angular框架,这个服务或者组件的构造函数的参数需要依赖注入器进行注入。所以如果构造函数中没有参数,可以无需@Injectable装饰器。组件和指令为什么没有@Injetable也能注入构造函数中的参数?因为@Component和@Directive装饰器也具备告知框架构造函数参数需要依赖注入,所以无需再组件、指令中使用@Injectable装饰器。

@Inject

@Inject是构造函数参数的注入器。@Inject(token) private ualue:ValueType,它告诉Angular框架需要从注入器中获取token对应的一个实例进行注入。所以如果我们在一个服务中的构造函数中依赖注入参数,也可以不使用@Injectable装饰器,可以直接在参数中使用@Inject(Aservice) private aService: Aservice进行注入。

小讯
上一篇 2025-03-08 23:02
下一篇 2025-02-27 14:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67762.html