Angular 2 全局组件

3

我的结构如下:

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

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

但是当我在组件11的模板中使用选择器时,控制台显示“不是已知元素”。

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

您能告诉我如何声明组件,以便可以在子模板中使用吗?


你能发布一些代码吗?至少那些模块文件。 - SeleM
你能否检查一下App组件的模块是否导出了Global组件,以及Component 11的模块是否导入了App组件的模块? - Davy
抱歉 @5313M,我不能这样做,堆栈说我的代码有缩进问题,尽管我明显没有(我的代码是4个空格缩进)。 - user4676340
@Davy,应用程序模块导出了组件,但是C11模块声明了该组件。如果我导入它,它会显示“未知指令[全局组件]”。 - user4676340
2个回答

3
我认为在 Angular 2 架构中并不知道 "全局组件"。请参考此处 ==> https://angular.io/docs/ts/latest/guide/architecture.html。从经验上来看,如果在 app.module 级别导入组件(例如 pipe),可能会出现问题。这种情况下,使用 pipe 就会出现 "未找到 pipe" 的错误。也许你的组件会遇到类似的问题。因此,我建议将你的组件作为一个模块的一部分,并在 app.module 中导入你的模块,而不是直接导入组件。

抱歉我使用词汇有误,但对我来说更清晰了。问题是我希望我的组件在多个模块中使用,如果我只在深层模块中导入它,而不是在根模块中,是否可行? - user4676340
2
我认为如果您像Karl建议的那样引入一个“SharedModule”来管理这些全局组件会更好。 - Davy
1
我为此使用了一个“工具模块”。 - Karl
好的,那么重点是创建一个新模块,我将在其他模块中使用它? - user4676340
好的,我做了,现在我有代码错误,但它似乎可以工作。我不知道这是正确的方法。谢谢大家! - user4676340

0

如果你想在不同的模块中轻松使用组件,可以创建一个专门用于组件的模块,并在该模块中声明你的组件,并将它们添加到模块的exports数组中。然后,每当你想要使用这些组件时,只需在需要使用组件的模块中import该模块即可。


1
你还应该记得在 exports: [] 中导出这些组件。 - davejoem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接