Angular 库服务始终有一个新实例

问题描述 投票:0回答:1

在 Angular 17 中, 有一个名为 CommonLib 的 Angular 库,它包含一个 WaitSpinnerService,它有一个私有类变量 waitSpinner = new EventEmitter();

我在AppComponent中使用CommonLib WaitSpinnerService,因此我需要将其导入到AppModule中。我强调 WaitSpinnerService 是在:'root' 中提供的。

在 appComponent 的构造函数中,我通过订阅监听 WaitSpinnerService waitSpinner.asObservable 以打开或关闭等待微调器。

我有很多延迟加载的模块。 当我导航到延迟加载的模块时,总是创建一个新的 WaitSpinnerService 我看到,当我导航到延迟加载的模块时,总是会执行 WaitSpinnerService 的构造函数,这怎么可能?

angular service shared-libraries lazy-loading
1个回答
0
投票
您可以将 webspinner 服务添加到延迟加载模块的providers数组中。这将在加载模块时初始化服务。

如果您想在延迟加载模块的第二次加载时初始化微调器,那么上述方法将不起作用,那么您需要将构造函数代码移至一个方法,并在延迟加载的根组件的构造函数期间调用它已加载模块。

© www.soinside.com 2019 - 2024. All rights reserved.