Angular如何将服务注入组件?

时间:2018-06-08 17:21:25

标签: angular typescript dependency-injection

Angular如何将服务注入组件?如果没有订购,它怎么办?

例如,以下组件:

export class MyComponent implements OnInit {

    constructor(
            private activatedRouter: ActivatedRoute,
            private serverService: ServerService,
    ) { }
}

与此组件具有相同的效果:

export class MyComponent implements OnInit {

    constructor(
            private serverService: ServerService,
            private activatedRouter: ActivatedRoute,
    ) { }
}

1 个答案:

答案 0 :(得分:2)

注入器是一个应用程序范围的容器,容纳创建的依赖项。此注入器将尽可能尝试重用这些依赖项。注入器利用提供程序创建新的依赖项。要回答您的问题,当组件依赖于服务时,它将检查注入器以查找该服务的现有实例。如果注射器没有注射器,它将使用set provider创建一个。如果组件依赖于多个服务,它将解析并返回每个服务。后,每个服务都可以作为构造函数的参数调用。除非未提供其中一项服务,否则构造函数中的服务顺序不会产生任何影响。正如Makoto评论的那样,这是关于依赖注入的具体细节。您可以在此处找到更多信息:

https://angular.io/guide/architecture-services