【问题标题】:I am getting this error when I am using a PIPE in multiple module当我在多个模块中使用 PIPE 时出现此错误
【发布时间】:2020-02-10 23:42:58
【问题描述】:

错误:类型 ObjectIterationPipe 是 2 的声明的一部分 模块:AppModule 和 Tab1PageModule!请考虑搬家 ObjectIterationPipe 到导入 AppModule 的更高模块和 Tab1 页面模块。你也可以创建一个新的 NgModule 来导出和 包括 ObjectIterationPipe 然后在 AppModule 中导入该 NgModule 和 Tab1PageModule。

如果我在 appModule 中声明,那么它会给我不同的错误。

【问题讨论】:

  • 检查您在两个模块中的声明(当然),您只需要在更高级别声明它,例如在 AppModule 中。
  • 如果您能添加模块代码对我们有帮助
  • 如果你分享你的两个模块代码会很棒。假设您有模块 A 和模块 B,如果您想共享除来自 A 的服务之外的任何其他内容,您可以在 A 的导出中添加这些(组件、管道、指令),并且在 B 的导入中注入 A 时,您可以在其中使用该管道A和B模块。注意:- 服务(在提供者中添加的)具有全局范围。

标签: javascript angular filter pipe


【解决方案1】:

您在两个模块的declaration 数组中声明了管道。

只保留在 AppModule 中。您必须从 Tab1PageModule 中的 declaration: [...] 中删除 ObjectIterationPipe

第二个选项是创建另一个模块以在模块之间共享实例并将其命名为例如SharedModule 然后在SharedModule 中声明declarations 数组ObjectIterationPipe。 最后将SharedModule添加到AppModuleTab1PageModuleimports

【讨论】:

  • 如果我从 Tab1PageModule 声明中删除它,它会告诉我找不到管道'objectIteration'。
  • 好的,所以你可能应该创建另一个模块,如“共享模块”,然后只在那里声明你的管道。然后在导入数组中的 AppModule 和 Tab1PageModule 中导入这个模块“SharedModule” - 这样架构是最清晰的
  • 是的,我也做过。我创建了一个核心模块,在其中声明所有管道并将其导入应用程序模块,然后错误是相同的。这是我现在面临的一个非常奇怪的错误。无论如何,感谢您的即时回复。
  • 所以你涵盖了所有步骤? 1. 创建 CoreModule 并在其中声明 Pipe 2. 在 AppModule 和 Tab1PageModule 中删除 Pipe 声明 3. 在 AppModule 和 Tab1PageModule 中导入 CoreModule
  • 我写这篇文章是为了非常感谢你。我再次重复了这个过程,现在它解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2015-02-27
  • 2013-05-20
  • 2021-12-28
相关资源
最近更新 更多