在角度文档常见问题解答部分,它指出,“与启动时加载模块的提供者不同,延迟加载模块的提供者是模块范围的。”link如何在延迟加载的模块中提供服务,并将该服务的作用域仅限于延迟加载的模块及其组件?
是否“模块范围”这里意味着仅仅在模块还是它扩展到包括属于该模块的所有组件吗?
我问的原因是因为我有一个延迟加载的模块,其中包含2个属于它的组件。我在模块中注册了一个服务,但由于某种原因,每个组件都获得了该服务的不同实例。
为了在我的延迟加载的模块中提供LazyModuleService并将该服务的作用域仅限于延迟加载模块及其组件,需要更改哪些内容?请包括所需的其他文件。我试图制作一个通用示例来帮助任何可能发现此问题的人。
延迟加载模块:
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { Component1 } from './component1.component';
import { Component2 } from './component2.component';
import { LazyModuleService } from './lazy-module.service';
@NgModule({
imports: [
CommonModule,
],
declarations: [
Component1,
Component2,
],
})
export class LazyLoadedModule { }
您是否已将LazyModuleService配置为您的懒惰模块的任何组件中的提供者? – snorkpete
不,我不知道。它只在LazyLoaded模块中配置。 – FlashBanistan
我假设这是一个错字,但你没有LazyModuleService作为你的LazyModule的提供者 – snorkpete