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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular模块 - 使用第三方软件包/模块的共享模块相关的知识,希望对你有一定的参考价值。

建立

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

我想在我的应用程序中有一个点,我用配置导入3PModule并在我的任何app模块中使用它。

问题/问题

  1. 如果我只在AppModule中导入它 - 它在我的延迟加载模块中不起作用。 (模板错误,指令未知) [这个应该是因为,根据我的理解,AppModule确实导入SharedModule但由于SharedModule不是在其declarations中具有特定组件/指令的那个,因此AppModule没有对这些第三方组件/声明的定义。它是否正确?更新:实际上,这可能是因为模块不是分层的,因此每个模块都必须单独导入SharedModule]
  2. 如果我只在一些SharedModule导入它然后我不知道如何导出配置:3PModule.forRoot(someConfig: someValue)

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

答案

我想你必须在你的3PModule.forRoot(someConfig: someValue)中导入AppModule,并在你的3PModule中导入SharedModule并从那里输出。原因是因为forRoot注册所有提供程序,因此只需要执行一次(通过在core或AppModule中导入它),但是要使用相应的指令或组件,您只需在相应的模块中导入该模块想要使用,所以最好在SharedModule中导入它并从那里导出它,因为SharedModule导入所有模块。

以上是关于Angular模块 - 使用第三方软件包/模块的共享模块的主要内容,如果未能解决你的问题,请参考以下文章

Angular Architecture - 导入第三方库以将其使用到功能模块中

Angular 2 应用程序结构/核心模块和第三方库

创建一个从第三方库提供服务的 Angular 共享库和模块是一种好习惯吗?

在 Angularjs 中使用节点模块

Angular.js模块划分

module.ngdoc