Angular模块-使用第3方软件包的共享模块

时间:2019-04-04 07:06:57

标签: angular

设置

  1. 我有很多延迟加载的模块
  2. 我有一个第三方模块来定义其组件/指令
  3. 我需要在许多模块(急切和延迟加载的模块)中使用第三方组件
  4. 第三方模块的配置名为3PModule.forRoot({someConfig: someValue})

我希望在我的应用程序中有一个点,我可以使用配置导入3PModule并在我的任何应用程序模块中以这种方式使用它。

问题/问题

  1. 如果仅在AppModule中导入它-在我的延迟加载模块中不起作用。 (模板错误,指令未知)

    [这应该是因为,据我了解,AppModule确实 导入SharedModule,但由于SharedModule不是具有 declarations中的特定组件/指令,然后 AppModule没有针对第3方的定义 组件/声明。它是否正确? 更新:实际上,这可能是因为模块不是分层的,所以每个模块都必须分别导入SharedModule]

  2. 如果仅将其导入到某些SharedModule中,则不确定如何使用以下配置导出它:3PModule.forRoot({someConfig: someValue})

对此合适的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

我认为您必须将3PModule.forRoot({someConfig: someValue})导入AppModule,并将3PModule导入SharedModule并从那里导出。原因是因为forRoot注册了所有提供程序,因此只需要执行一次(通过将其导入core或AppModule),但是要使用相应的指令或组件,您只需要将该模块导入到您要使用的各个模块,因此最好将其导入SharedModule并从那里导出,因为SharedModule是导入所有模块。