所以,我的 Angular 应用程序中有 3 个模块。
// main module
@NgModule({
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
// lazy loading module
@NgModule({
})
export class ClinicModule { }
// lazy loading module
@NgModule({
})
export class PatientModule { }
我们知道,出于延迟加载行为的目的,我无法在 AppModule 中导入ClinicModule和PatientModule。
但是, ClinicModule 内部有一个名为PatientGroupService的服务。
我在 ClinicModule 中使用该服务进行 CRUD 操作,并在 PatientModule 中使用该服务来提供 PatientGroup 列表。
所以,我在两个模块中都需要它,我发现,在 AppModule 中只获取一个 PatientGroupService 实例而不导入 ClinicModule 的唯一方法是直接在 AppModule 上提供 PatientGroupService,就像这样
// main module
@NgModule({
declarations: [AppComponent],
bootstrap: [AppComponent],
providers :[PatientGroupService]
})
export class AppModule { }
您可能注意到,它不是“全局服务”,只是用于 2 个非主要模块的服务。
它有效,但我想知道:
- 这是实现我目标的“正确方法”吗?
- 还有另一种/更好的方法吗?