Angular2学习笔记(六) Angular2 依赖注入
在java的世界中我们有spring的 什么是装饰器,装饰器都有什么
java的世界大家都叫他注解,其实就是带着@符号的类(暂时这么理解就好) 依赖注入的好处有了依赖注入我们可以随时更改注入类,比如我们定义一个日志接口Logger,其实现类有 useClass属性useClasss,要注入的实际子类 providers:[{ provide: Logger,useClass: Logger1 }] 注意千万别使用接口注入,例如useClass放一个接口,那么angular会报错的,因为在JavaScript世界里面没有接口的概念 useExisting属性useExisting,使用已经注册的类型注入到这里(即别名),下面示例意思是将Logger1起个叫Logger2的别名 providers:[{ provide: Logger2,useExisting: Logger1 }] useValue属性useValue,值或对象替换,如 { provide: MyValue,useValue: 41 } useFactory属性useFactory,使用工厂注入 //采用的lambda表达式语法 let testServiceFactory = (logger: Logger) => { return new TestService(logger); }; providers:[{ provide: TestService,useFactory: testServiceFactory,deps: [Logger] }] deps属性deps属性是提供商令牌(其实就是一个类的标示)数组. 手动创建一个基于接口的注入类解决方案是定义和使用OpaqueToken(不透明的令牌)。定义方式类似于这样: import { OpaqueToken } from '@angular/core'; export let APP_CONFIG = new OpaqueToken('app.config'); 使用这个OpaqueToken对象注册依赖的提供商: providers: [{ provide: APP_CONFIG,useValue: HERO_DI_CONFIG }] 现在,在@Inject装饰器的帮助下,这个配置对象可以注入到任何需要它的构造函数中: constructor(@Inject(APP_CONFIG) config: AppConfig) { this.title = config.title; }
或者在 ngModule 中提供并注入这个配置对象,如AppModule。 providers: [ UserService,{ provide: APP_CONFIG,useValue: HERO_DI_CONFIG } ] 总结关于Inject和Optional的说明,这里没有说明,具体的可以的可以参照上面表格去查看官方教程. 其他资料中文官方文档 英文官方文档 查看源代码 演示地址
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |