码迷,mamicode.com
首页 > 其他好文 > 详细

【2019-11-20】服务与DI简介

时间:2019-11-20 12:21:41      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:组件   tab   module   请求   table   16px   mod   inject   ros   

DI -- dependency injection

技术图片

 

当Angular创建组件类的新实例时,它会通过查看该组件类的构造函数,来决定该组件依赖哪些服务或者其他依赖项 ,比如上面的heroService

当Angular发现某个组件依赖某个服务时,它会首先坚持是否该注入器中已经有了那个服务的任何现有实例。如果所请求的服务尚不存在,注入器会使用以前注册的服务提供商制作一个,并把它加入注入器中,然后把该服务返回给Angular

当所有请求的服务已解析并返回时,Angular可以用这些服务实例为参数,调用该组件的构造函数

提供服务

对于要用到的任何服务,你必须至少注册一个提供商。

①服务可以在自已的元数据中把自已注册为提供商,这样可以让自已随处可用

技术图片

 

在根一级提供服务时,Angular会创建一个单一的共享实例,并且把它注入到任何想要它的类中。这种在@Injectable元数据注册提供商的方式还可以让angular能够通过移除那些从未被用过的服务来优化大小

②可以在特定的模块注册提供商,该服务的同一个实例将会对该NgModule中的所有组件可用

技术图片

 

③也可以在组件级注册提供商,你会为该组件的每一个新实例提供该服务的一个新实例

技术图片

 

 

【2019-11-20】服务与DI简介

标签:组件   tab   module   请求   table   16px   mod   inject   ros   

原文地址:https://www.cnblogs.com/QQ-lala/p/11896783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!