加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Angular2中正确使用依赖注入(DI)?

发布时间:2020-12-17 08:14:09 所属栏目:安全 来源:网络整理
导读:我一直在试图弄清楚(DI)依赖注入在Angular2中的工作原理。每当我试图向我的组件中注入一个服务或类时,我遇到了很多问题/问题。 从不同的googled文章中,我需要在组件配置中使用提供者:[],或者有时我需要在我的构造函数中使用@Inject()或直接注入引导(app
我一直在试图弄清楚(DI)依赖注入在Angular2中的工作原理。每当我试图向我的组件中注入一个服务或类时,我遇到了很多问题/问题。

从不同的googled文章中,我需要在组件配置中使用提供者:[],或者有时我需要在我的构造函数中使用@Inject()或直接注入引导(app,[service])?我也看过一些文章要我把@injectable装饰器。

例如:要注入Http,我只需要导入{Http}并将Http放在提供者中,但对于FormBuilder,我需要在构造函数中使用@Inject()。

有什么经验法则什么时候使用什么?请你提供一些示例代码片段?谢谢 :-)

Angular2中的依赖注入依赖于与组件树链接的分层注射器。

这意味着您可以在不同级别配置提供程序:

>对于引导它的整个应用程序。在这种情况下,所有子注入器(组件)将看到此提供程序并共享与之关联的实例。当交互时,它将是同一个实例
>对于特定组件及其子组件。与以前相同,但对于特定的组件。其他组件不会看到此提供程序。如果您重新定义上面定义的内容(例如,在引导时),将使用此提供程序。所以你可以重写事情。
>服务。没有与他们相关的提供商。它们使用触发元素的注入器(直接=组件或间接地=触发服务链调用的组件)

关于你的其他问题:

> @Injectable。要注入课堂,你需要一个装饰师。组件有一个(@Component一个),但是服务是简单的类。如果服务需要注入依赖关系,则需要这个装饰器。
> @Inject。在大多数时候,构造器参数的类型足以让Amgular2确定要注入的内容。在某些情况下(例如,如果您明确使用OpaqueToken而不是一个类来注册提供程序),则需要指定一些关于注入内容的提示。在这种情况下,您需要使用@Inject。

有关详细信息,请参阅这些问题

> What’s the best way to inject one service into another in angular 2 (Beta)?
> Angular2: Inject a non @Injectable class
> Inject all Services that implement some Interface

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读