Geo*_*ang 24 angular2-services angular2-di angular
我一直试图弄清楚(DI)依赖注入如何在Angular2中工作.每当我尝试将服务/或类注入到我的组件中时,我遇到了很多问题/问题.
从不同的googled文章,我需要providers: []
在组件配置中使用,或者有时我需要@Inject()
在我的构造函数中使用或直接注入bootstrap(app, [service])
?我也看到一些文章要我@injectable
装扮装饰.
例如:要注入Http,我只需要将import{Http}
Http放在提供程序中,但对于FormBuilder,我需要@Inject()
在构造函数中使用.
什么时候使用什么有什么经验法则?你能提供一些示例代码片段吗?谢谢 :-)
Ank*_*ngh 17
广泛的问题,TL; DR版本
是一个装饰器,它告诉typescript
装饰类有dependencies
并且并不意味着这个类可以注入其他类.
然后TypeScript理解它需要在构造时通过使用imported
依赖项将所需的元数据注入到修饰类中.
bootstrap()负责在我们的应用程序引导时为其创建根注入器.它将提供程序列表作为第二个参数,它将在创建时直接传递给注入器.
您使用将在许多地方使用的服务来引导您的应用程序Http
,这也意味着您不需要providers: [Http]
在类配置中编写.
提供者还负责将所有服务的参数传递给Injector
.
如果服务bootstrap()
不合适,您可以将服务放在提供商中.并且仅在少数地方需要.
constructor(@Inject(NameService) nameService)
constructor(nameService: NameService)
,打字稿将处理其余的.进一步阅读
如果你想深入研究DI,请看看这篇精彩的文章
并且要了解装饰器与注释,请看这个.
希望这可以帮助.:)
Thi*_*ier 13
Angular2中的依赖注入依赖于链接到组件树的分层注入器.
这意味着您可以在不同级别配置提供程序:
关于你的其他问题:
有关其他详细信息,请参阅以
归档时间: |
|
查看次数: |
18682 次 |
最近记录: |