【问题标题】:Angular 2 global componentAngular 2 全局组件
【发布时间】:2017-05-16 11:32:46
【问题描述】:

我的结构如下:

App
    *component, module, template*
    Component 1
        *component, module, template*
        Component 11
            *component, module, template*
    Global Component
        *component, temaplte, BUT NO MODULE*

My App 模块包含组件 1 和组件 11 模块。我在 app 模块中声明了全局组件,以便可以在所有其他组件中使用它。我还在 app 模块中导出了它。

但是当我在组件 11 模板中使用选择器时,控制台显示not a known element

我尝试在我的其他组件中导入它,但它说它已经导入,我应该在更高的模块中导入它。

你能告诉我如何声明一个组件以便它可以在子模板中使用吗?

【问题讨论】:

  • 你能发布一些代码吗?至少那些模块文件..
  • 能否检查App组件的模块是否导出了Global组件,以及Component 11的模块是否导入了App Component的模块?
  • 对不起@5313M,我不能,堆栈说我的代码有缩进问题,即使我显然没有缩进问题(我的代码缩进了 4 个空格)
  • @Davy 应用模块导出组件,但 C11 模块声明了该组件。如果我导入它,它会显示unknon directive [Global component]

标签: angular angular2-components angular2-modules


【解决方案1】:

我假设“全局组件”在 Angular 2 架构中是未知的。参见这里 ==> https://angular.io/docs/ts/latest/guide/architecture.html

根据经验,我知道如果在 app.module 级别导入组件(例如管道)可能会出现问题。例如,当使用管道执行此操作时,您会收到“找不到管道”错误。也许你的组件遇到了类似的问题。

所以我建议将您的组件作为模块的一部分,然后将您的模块导入您的 app.module 而不是组件中。

【讨论】:

  • 很抱歉误用了这些词,但这样对我来说似乎更清楚了。关键是我希望我的组件在多个模块中使用,如果我只将它导入深度模块而不是根模块中,是否有可能?
  • 我认为如果您为此类全局组件引入“SharedModule”会更好(正如 Karl 建议的那样)
  • 出于这个原因,我使用了“工具模块”
  • 好的,重点是创建一个新模块,我将在其他模块中使用它?
  • 好的,我做到了,现在我有代码错误,但它似乎工作。我不知道这是正确的方法。谢谢大家!
【解决方案2】:

要轻松使用不同模块中的组件,您可以做的一件事是为您的组件和declare 该模块中的组件创建一个模块,并将它们添加到exports 的数组中模块,然后每当您想使用组件时,只需 import 模块中您要使用组件的那个模块。

【讨论】:

  • 您还应该记住将这些组件导出到exports: []
  • @davejoem 谢谢,我编辑了我的答案。
猜你喜欢
  • 2017-02-05
  • 2017-03-09
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多