//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