在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