在Angular 2中是否可以在启动时执行服务?bootstrap不会执行服务的构造函数。此外,每当某个组件注入该服务时,注入器都会执行该服务的构造函数。有没有办法使服务成为单例,并确保构造函数仅运行一次?
将服务仅添加到bootstrap中,而不是在组件的providers中添加。如果您在AppComponent中注入它,它将被实例化且仅一次。
将服务添加到组件的providers中会为每个组件实例创建一个新实例。
Bootstrap不会启动服务,注入服务的消费类会启动。将其列在引导程序中,您将获得单例。
如果按照惯例将可注入服务(LogRepository)列入引导程序,则所有服务都将是单例。 (如LogRepository中所示)
bootstrap(TheApp,[HTTP_PROVIDERS,LogRepository]);
如果您将它们列为组件提供程序,则可以获取更多可注入服务的实例,但一开始,只需在bootstrap()中列出它们。 然后全部是单例。
bootstrap(App,[..])
放在哪里? - fsi
bootstrap(AppComponent,[provide(MyService,useValue:new MyService())])
- Günter Zöchbauer