【问题标题】:Re-export nested modules重新导出嵌套模块
【发布时间】:2025-11-23 02:40:02
【问题描述】:

我有一个 Angular 2 项目,其结构如下:

/app
    app.component.ts
    app.module.ts
    /shared
           shared.module.ts
           /layout
           /utilities
                     utilities.module.ts
                     /icon
                          icon.component.ts
                     /message
                             message.module.ts
                             message.component.ts <----Problem here

在 utility.module.ts 中,我导入图标组件,声明它并导出它。 在共享模块中,我导入实用程序模块并将其导出。 在 app 模块中,我导入了共享模块。在我的应用程序组件中,我想 使用我的图标组件,但出现错误:'app-icon' is not a known element:

是否可以重新导出这样的模块/组件? 如果没有,是否将实用程序模块直接导入应用程序模块的唯一替代方法?

编辑: 我注意到抱怨 app-icon 组件不可用的模块/组件/模板是消息组件。我尝试过将图标组件直接导入到消息组件中,但还是报错图标组件不可用。

【问题讨论】:

    标签: angular angular2-modules


    【解决方案1】:

    编辑:我注意到抱怨 app-icon 组件不可用的模块/组件/模板是消息组件。我尝试过将图标组件直接导入到消息组件中,但还是报错图标组件不可用。

    组件/指令/管道不会从父模块继承,即MessageModule 不会通过AppModule 获得任何可用。 MessageModule 需要通过导入包含这些项目的模块来提供对其所需的任何外部项目的访问。因此,您可能只需将imports: [ UtilitiesModule ] 放入MessageModule,这样就不会引发错误。

    如果UtilitiesModule 中有MessageModule,这可能会导致循环依赖错误。我不确定。在这种情况下,您可能需要重组。

    【讨论】:

    • 感谢您的解释。将图标组件导入消息模块实际上导致了在两个模块中声明图标组件的错误。可能是因为消息模块被实用程序模块导入。无论如何,我只是制作了一个图标模块,然后我可以将其导入实用程序和消息模块。我不确定一个解决方案有多好,需要更深入地研究结构化 angular 2。
    最近更新 更多