我正在关注服务工作者的 Angular 文档 (https://angular.io/guide/service-worker-communications)。该页面列出了一系列用于处理 Service Worker 生命周期处理程序(更新、失败的生命周期等)的服务示例。
我对这些服务的生命周期感到困惑,它们中的每一个都在项目的根部注册,并在其构造函数中订阅 Angular 的
SwUpdate
,但如果我理解正确的话构造函数将不会被调用,除非我将这些服务中的每一个注入到组件中?
要明确的是:如果我尝试从服务的构造函数将消息记录到控制台,我就看不到这些日志即使
@Injectable
装饰器是通过providedIn: 'root'
选项传递的,但如果我明确地在项目的引导程序组件中实例化服务,打印日志。
那么“后台服务”是什么意思呢?我的意思是 项目中的任何组件未显式导入的服务,但仍应实例化(在本例中是将一些事件侦听器附加到不同的服务)。
我应该在项目的引导组件中注入后台服务吗? 在至少一个组件中注入“后台”服务是 Angular 中的一种常见做法,还是有其他方法可以实例化它们?
(这是一个非常简单的 stackblitz,其中包含我的意思的示例:https://stackblitz.com/edit/stackblitz-starters-gnucr3?file=src%2Fmain.ts)。