//DI令牌和它相关联的服务 providers:[{provide:AService,useClass:BService}] constructor( //实例与DI令牌 private aService:BService, ){}
{ provide: Logger, useClass: BetterLogger }
前面一个键值对是用来找依赖,后面一个键值对是用来建立依赖ide
//1.建立令牌---value.ts export const AToken=new InjectionToken('a')//'a'是描述 //2.用建立好的令牌注册提供商 {provide:AToken,useValue:hero} //3.把依赖注入到构造函数 constructor( //前面没有private @Inject(AToken) obj ){ //把依赖放到this上 this.myobj=obj }
下面的例子显示了,令牌不同,类相同,可是产生了不一样的实例函数
providers:[ {provide:AService,useClass:AService}, {provide:BService,useClass:AService}, ] constructor( private aService:AService, private bService:BService, ){} ngOnInit(){ this.aService.a=11 console.log('a',this.aService['a'],this.bService['a'])//11,1 }
providers:[ {provide:AService,useClass:AService}, {provide:BService,useExisting:AService}, ]
流程 父组件修改服务里面的值,而后取值,子组件修改服务里面的值,而后取值this