JustDoItTomorrow
3/23/2018 - 1:50 AM

配置提供商:基本形式

// 简写形式
providers: [Logger]

// 完整形式
[{ provide: Logger, useClass: Logger }]

// 使用不同的类,下列代码告诉注入器,当有人请求 Logger 时,返回 BetterLogger
[{ provide: Logger, useClass: BetterLogger }]

// 简写和完整形式混合使用
[ UserService,
  { provide: Logger, useClass: EvenBetterLogger }]
  
// 试图让OldLogger成为NewLogger的别名,但不幸的是,这里创建了两个实例
[ NewLogger,
  // Not aliased! Creates two instances of `NewLogger`
  { provide: OldLogger, useClass: NewLogger}]
  
// 使用useExisting,解决上面问题,只创建了一个实例
[ NewLogger,
  // Alias OldLogger w/ reference to NewLogger
  { provide: OldLogger, useExisting: NewLogger}]
  
// silentLogger是一个现成对象,使用useValue直接用现成对象来取代logger
[{ provide: Logger, useValue: silentLogger }]