Javascript 角度-为懒散加载模块提供全球服务

Javascript 角度-为懒散加载模块提供全球服务,javascript,angular,ng-modules,Javascript,Angular,Ng Modules,所以,我的Angular应用程序中有3个模块 // main module @NgModule({ declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } // lazy loading module @NgModule({ }) export class ClinicModule { } // lazy loading module @NgModule({ })

所以,我的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中导入ClinicModulePatientModule

但是,Clinical模块中有一个名为PatientGroupService的服务

我在ClinicModule中使用此服务进行CRUD操作,在PatientModule中使用此服务来生成PatientGroup列表

所以,我在这两个模块中都需要它,我发现,在AppModule中只获取一个PatientGroupService实例而不导入ClinicModule的唯一方法是直接在AppModule上提供PatientGroupService,如下所示

// main module
@NgModule({
  declarations: [AppComponent],
  bootstrap: [AppComponent],
  providers :[PatientGroupService]
})
export class AppModule { }
您可能会注意到,它不是一个“全局服务”,只是一个用于2个非主模块的服务

这很有效,但我想知道:

  • 这是实现我目标的“正确方法”吗
  • 有没有其他/更好的方法

为什么不只在
临床医生模块
患者模块
中提供此服务?首先,感谢Maximus的回复。。在这种特殊情况下,没有问题,我不需要只需要一个实例(事实上,这将使它更加自动)。但是,我是否应该尽可能只保留一个实例?它会有更好的性能吗?顺便说一下,如果我真的只需要一个实例,这个方法可以接受吗?一个实例和两个实例之间几乎没有区别),所以我会选择两个实例,因为它提供了封装—您不需要应用程序范围内的可见性。但是如果你真的只需要一个实例,你应该在AppModule OnlyTanks Max中提供服务。。你让我开心!!不客气,伙计,祝你好运!