【问题标题】:What is the difference between PROVIDER, INJECTOR and SERVICE in Angular 2-7?Angular 2-7 中的 PROVIDER、INJECTOR 和 SERVICE 有什么区别?
【发布时间】:2018-11-24 00:59:55
【问题描述】:

谁能用更简单的词向我解释一下不同之处。任何带有或不带有代码的实时示例都可以。

【问题讨论】:

    标签: angular typescript dependency-injection dependencies


    【解决方案1】:

    服务是 Angular 中的一个类,它在 Angular 依赖注入器中注册。在下面的示例中,StudentService 类是一个服务。

    import { Injectable } from '@angular/core';
    
    @Injectable({
      providedIn: 'root',
    })
    export class StudentService {
      constructor() { }
    }
    

    Angular 注入器 负责创建服务实例并将它们注入到类中。通常注射器在幕后工作。下面的代码显示了正在显式创建的注入器。

    constructor(private injector: Injector) { }
    

    以下代码将服务直接注入到宿主组件中。

    injector.get(Service)
    

    Providers 告诉注入器如何创建服务。如果没有提供者,注入器将不知道它负责注入服务,也无法创建服务。通常,提供者会在模块或组件元数据中提及。例如,如果一个组件要调用服务“FileWriter”,则该组件应在元数据中提及,该服务应由注入器创建和注入。

    providers: [FileWriter]
    

    【讨论】:

    • 完美答案。谢谢。
    • 我想知道,如果我们通过组件元数据在2个不同的组件中注册我们的服务,提供者会创建多少个实例?因为在 NgModule 中只会创建一个服务实例。
    • 如果使用 2 个不同的组件注册服务,将创建 2 个不同的服务实例。
    • @KapilRaghuwanshi ,仅供参考,如果有用,请接受并投票。
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多