在ng-alain文檔如何啓動部分,說到腳手架的啓動始於 startup.service.ts,那麼應用是如何來啓動它的呢?在app.module.ts註解的provider部分,提供的啓動配置都在這裏。
providers: [
{ provide: LOCALE_ID, useValue: 'zh-Hans' },
{ provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true},
{ provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true},
{ provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false },
StartupService,
{
provide: APP_INITIALIZER,
useFactory: StartupServiceFactory,
deps: [StartupService],
multi: true
}
],
在這裏StartupServiceFactory,是一個函數,採用的是FactoryProvider注入依賴的方式
export function StartupServiceFactory(startupService: StartupService): Function {
return () => startupService.load();
}
關於FactoryProvider,可以看這遍文章
APP_INITIALIZER是一個函數數組,在應用啓動時初始化。因此在應用啓動時,startupService.load()會被調用,來完成初始化工作。
更詳細的依賴注入查看https://segmentfault.com/a/1190000009612113