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的区别