Angular 2-7 中的 PROVIDER、INJECTOR 和 SERVICE 有啥区别?

Posted

技术标签:

【中文标题】Angular 2-7 中的 PROVIDER、INJECTOR 和 SERVICE 有啥区别?【英文标题】: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 【问题描述】:

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

【问题讨论】:

【参考方案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 ,仅供参考,如果有用,请接受并投票。

以上是关于Angular 2-7 中的 PROVIDER、INJECTOR 和 SERVICE 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决缩小代码中的 Angular JS Unknown Provider 错误

angularjs中的factory,service与provider的区别

在angular中,provider,怎么使用

ionic准备之angular基础———服务provider 和 factory

Angular Provider 之 useFactory

Angular Multi Provider 依赖顺序