微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()跳过自己向上找


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐