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

黄浩

我一直在试图找出Angular2中的(DI)依赖注入是如何工作的。每当我尝试将服务/或类注入组件时,都会遇到很多问题/问题。

从不同的Google文章中,我要么需要providers: []在Component配置中使用,要么有时需要@Inject()在我的构造函数中使用,或者直接在bootstrap(app, [service])?中注入我也看到一些文章希望我放@injectable装饰器。

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

何时使用什么有什么经验法则吗?您能否提供一些示例代码片段?谢谢 :-)

蒂埃里·坦维尔(Thierry Templier):

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

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

  • 对于整个应用程序,当启动时。在这种情况下,所有子注入器(组成部分的注入器)都将看到此提供程序并共享与之关联的实例。进行互动时,将是同一实例
  • 用于特定组件及其子组件。与以前相同,但用于à特定组件。其他组件将看不到该提供程序。如果重新定义上面定义的内容(例如,在进行引导时),则将使用此提供程序。因此,您可以覆盖所有内容。
  • 为服务。没有与它们关联的提供程序。他们使用触发元素中的注入器中的一个(直接=组件或间接=触发服务链调用的组件)

关于您的其他问题:

  • @可注射 要插入一个类,您需要一个装饰器。组件只有一个(@Component是一个),但是服务是简单的类。如果服务要求将依赖项注入其中,则需要此装饰器。
  • @注入。在大多数情况下,构造函数参数的类型足以让Angular2确定要注入的内容。在某些情况下(例如,如果您显式使用OpaqueToken而不是类来注册提供程序),则需要指定一些有关注入内容的提示。在这种情况下,您需要使用@Inject。

有关其他详细信息,请参见以下问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在MVC6中正确注入HttpContext

Angular2中带有可选参数的依赖注入

如何在Angular2中正确使用依赖项注入?

在Angular2中正确使用Elvis运算符以获取Dart组件的视图

我如何使用依赖注入从angular2的父组件访问值?

可观察对象以及如何在Angular2中正确使用它们

在Angular2中,使用继承还是注入依赖关系?

了解angular2中的依赖注入

Angular2依赖注入与@ViewChild

angular2中的单元测试,依赖注入

在C#中正确使用依赖注入和YAGNI混淆

如何在Visual Studio 2015中正确设置Angular2和WebAPI 2.0并将其部署到IIS

Angular2服务测试:使用beforeEach注入依赖项

如何在angular2路由中正确设置应用程序上下文路径?

如何在Angular2 Web应用程序中正确使用ngFor?

如何在Angular2中正确实现detectChanges()?

迁移到Angular2:如何使用注入的AngularJS依赖项

如何在角度2中正确使用forEach循环?

Angular2中依赖项注入的语法

如何在startup.cs中正确注册抽象的通用类以进行依赖注入?

如何在compodoc + angular2中正确记录接口属性

如何在Angular 8中正确使用PrimeNg Toast

如何在Angular 8中正确使用setValue

如何在Blazor Server的后端中正确使用依赖注入?

Angular2中的依赖注入-TypeScript语法与@Inject

如何在基于服务的Angular2项目中使用依赖注入

TypeScript-如何在Angular2中正确使用jsPDF?

了解模块中的Angular2依赖注入

如何使用依赖注入 (DI) 调用类