JustDoItTomorrow
3/23/2018 - 2:29 AM

配置提供商:非类依赖

也就是依赖不是一个类,而是对象

// 默认只能用类(无法用接口)作为provider的令牌,不能用值,这里演示了如何用值作为令牌

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

// 创建要依赖的对象
export const HERO_DI_CONFIG: AppConfig = {
  apiEndpoint: 'api.heroes.com',
  title: 'Dependency Injection'
};

// 创建一个令牌,类型参数虽然是可选的,但可以向开发者和开发工具传达类型信息。
export const APP_CONFIG = new InjectionToken<AppConfig>('app.config'); 


// 然后就可以在module里这样配置,使用useValue
providers: [{ provide: APP_CONFIG, useValue: HERO_DI_CONFIG }]

// 因为不是类型而是对象,所以在@Inject装饰器的帮助下使用
constructor(@Inject(APP_CONFIG) config: AppConfig) {
  this.title = config.title;
}