Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2:将同时包含指令和服务的功能分解为模块的最佳实践是什么?_Angular_Lazy Loading_Angular Directive_Angular Services_Ng Modules - Fatal编程技术网

Angular2:将同时包含指令和服务的功能分解为模块的最佳实践是什么?

Angular2:将同时包含指令和服务的功能分解为模块的最佳实践是什么?,angular,lazy-loading,angular-directive,angular-services,ng-modules,Angular,Lazy Loading,Angular Directive,Angular Services,Ng Modules,我计划在Angular2开发一个功能,为社区做出贡献 该功能由一条指令和一项服务组成。 我想知道如何最好地将功能打包到一个模块(或多个模块)。 服务必须是全局的,因此用户必须将其导入核心模块-不能在延迟加载的模块中导入 可以在用户需要使用该指令的地方导入该指令 为了让它工作,我必须创建两个不同的模块:一个包含服务,应该由核心模块导入和重新导出;另一个包含指令,可以在用户需要的地方导入,也可以在共享模块中全局导入 现在,我有点不喜欢这种配置,因为我必须将我的功能分为两个模块 我知道,知道Ang

我计划在Angular2开发一个功能,为社区做出贡献

该功能由一条指令和一项服务组成。

我想知道如何最好地将功能打包到一个模块(或多个模块)。

  • 服务必须是全局的,因此用户必须将其导入核心模块-不能在延迟加载的模块中导入
  • 可以在用户需要使用该指令的地方导入该指令
为了让它工作,我必须创建两个不同的模块:一个包含服务,应该由核心模块导入和重新导出;另一个包含指令,可以在用户需要的地方导入,也可以在共享模块中全局导入

现在,我有点不喜欢这种配置,因为我必须将我的功能分为两个模块

我知道,知道Angular2如何工作的用户应该能够毫无问题地进行设置,但我还是希望能够将所有内容封装在一个模块中?目前实现这一目标的最佳实践是什么

目前我没有看到任何不同的解决方案:因为如果我将服务和指令放在同一个模块中,那么当我需要在组件中导入指令时,服务将包含在同一个导入中;如果组件是延迟加载的,这将为该组件创建服务的第二个副本,这是错误的


提前感谢您的帮助

在模块的
.forRoot()
中提供服务,并要求将其与
MyModule.forRoot()
一起导入AppModule(例如路由器模块)

forRoot
添加到您的模块中

此外,每个想要使用组件的模块都需要使用


有关更多详细信息,请参见

您是否考虑过使用
forRoot
模式?
static forRoot(config: UserServiceConfig): ModuleWithProviders {
  return {
    ngModule: CoreModule,
    providers: [
      {provide: UserServiceConfig, useValue: config }
    ]
  };
}
imports: [
  BrowserModule,
  ContactModule,
  CoreModule.forRoot({userName: 'Miss Marple'}),
  AppRoutingModule
],