Angular依赖注入笔记

@Injectable({

  providedIn: 'root',

})

providedIn: 'root', 表示在这个application中的任何地方都可以看到,如果不使用这个,就需要在app.module.ts中进行providers

使用这个装饰器,表示这个service可以注入,并且在每一个地方都是相同的instance(单例),这个和DI Token有关系,DI Token实际上是一个service instance map, 比如providers:[SomeService], DI Token中会有这个SomeService对应的一个instance,

这样在使用的时候,引用申明了类型,DI Token就会根据类型找这个对应的instance,实现单例。

heroService: HeroService;

constructor(heroService: HeroService)

如果要各个component使用不同的service instance需要在compoent的providers:[SomeService],进行申明

DI framework会依次向上查找providers树,如果没有找到,就抛出异常,可以通过以下方式更改DI framework的查找方式

@Optional  当没找到依赖的时候返回null

@Host() 只在本component查找,如果component被嵌入到其他component,Host编程parent component那一级

@Self()只在自己这里找, @SkipSelf()跳过自己向上找


相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...