在 Angular 2(Beta)中将服务注入到其他服务
使用 @Component 装饰器将服务注入到组件中非常简单。然而,在组件之外注入服务会带来挑战。
问题陈述
在 Angular 2 中,我们希望避免在其他服务中手动实例化服务,如以下代码片段:
export class MyFirstSvc { } export class MySecondSvc { constructor() { this.helpfulService = new MyFirstSvc(); } } export class MyThirdSvc { constructor() { this.helpfulService = new MyFirstSvc(); } }
解决方案
解决方案涉及在我们希望注入的服务上使用 @Injectable 装饰器。该装饰器为依赖注入准备服务的构造函数参数。
注入器层次结构
要理解注入的工作原理,必须掌握注入器层次结构的概念:
将服务注入组件或另一个服务时,Angular2 按以下顺序搜索提供程序:
提供者共享
注入器层次结构允许受控地共享服务实例:
示例
@Injectable() export class Service1 { constructor(service2:Service2) { this.service2 = service2; } getData() { return this.service2.getData(); } }
@Injectable() export class Service2 { getData() { return [{ message: 'message1' }, { message: 'message2' }]; } }
在此示例中:
资源
以上是如何将服务注入到 Angular 2 中的其他服务中?的详细内容。更多信息请关注PHP中文网其他相关文章!