Angular 2-7中的PROVIDER,INJECTOR和SERVICE有什么区别?

Kap*_*shi 5 dependencies dependency-injection typescript angular

任何人都可以用简单的词语向我解释差异。任何带有或不带有代码的实时示例也可以使用。

Rak*_*M R 6

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

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class StudentService {
  constructor() { }
}
Run Code Online (Sandbox Code Playgroud)

Angular注入器负责创建服务实例并将其注入类。通常,喷油器在后台工作。下面的代码显示了明确创建的注射器。

constructor(private injector: Injector) { }
Run Code Online (Sandbox Code Playgroud)

以下代码将服务直接注入主机组件。

injector.get(Service)
Run Code Online (Sandbox Code Playgroud)

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

providers: [FileWriter]
Run Code Online (Sandbox Code Playgroud)