在 Angular 的依赖注入系统中,提供者(Provider)是一个用于告诉注入器如何创建和获取依赖项的配置对象。提供者告诉注入器如何实例化或获取一个依赖项,以及在何处查找它。

在 Angular 中,提供者可以在组件级别、模块级别或应用级别进行配置。以下是一些常见的提供者配置:

1. 使用类作为提供者:
   @NgModule({
     providers: [DataService],
   })
   export class AppModule {}
   这里 DataService 是一个服务类,通过模块级别的提供者配置,使其成为整个应用的单例服务。

2. 使用工厂函数作为提供者:
   @NgModule({
     providers: [
       {
         provide: DataService,
         useFactory: () => {
           // 返回一个 DataService 的实例或其他逻辑
           return new DataService();
         },
       },
     ],
   })
   export class AppModule {}
   使用工厂函数允许你执行更复杂的逻辑来创建依赖项。

3. 使用值作为提供者:
   @NgModule({
     providers: [
       {
         provide: 'API_URL',
         useValue: 'https://api.example.com',
       },
     ],
   })
   export class AppModule {}
   在这个例子中,提供了一个字符串值作为依赖项,可以在注入时直接使用。

4. 使用现有的提供者:
   @NgModule({
     providers: [
       ExistingService,
       { provide: NewService, useExisting: ExistingService },
     ],
   })
   export class AppModule {}
   这里 NewService 使用了已存在的 ExistingService 作为提供者。

5. 使用 InjectionToken 作为提供者:
   export const MY_TOKEN = new InjectionToken<string>('myToken');

   @NgModule({
     providers: [
       { provide: MY_TOKEN, useValue: 'myValue' },
     ],
   })
   export class AppModule {}
   InjectionToken 允许你创建一个唯一的标识符,以确保依赖项的唯一性。

这些提供者的配置选项可以根据需要进行组合和定制,以满足应用程序的特定需求。提供者的正确配置是 Angular 依赖注入系统中关键的一部分,它影响了依赖项的生命周期、作用域和实例化方式。


转载请注明出处:http://www.pingtaimeng.com/article/detail/4934/Angular