You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netlify部署Angular项目报错ToolBarComponent被多个NgModule声明怎么解决

解决Angular NG6007 组件被多个NgModule声明的问题

NG6007报错的核心原因是ToolBarComponent被添加到了超过一个NgModule的declarations配置数组中,Angular要求每个组件/指令/管道只能被唯一的一个NgModule声明。

具体解决步骤

  • 第一步:定位所有重复声明的位置
    全局搜索项目中所有的NgModule装饰器配置,找到所有在declarations数组中引入了ToolBarComponent的模块,仅保留1处声明,删除其余所有模块中declarations里的ToolBarComponent条目。
  • 第二步:配置组件的跨模块调用权限
    找到你保留的声明ToolBarComponent的那个NgModule,把ToolBarComponent添加到该模块的exports数组中,示例代码如下:
@NgModule({
  declarations: [ToolBarComponent],
  // 导出组件,允许其他导入该模块的地方使用Toolbar
  exports: [ToolBarComponent]
})
// 这里替换为你实际保留声明的模块名即可,不需要单独新建页面
export class YourExistingModule { }
  • 第三步:在需要使用工具栏的模块中引入对应的NgModule
    所有需要用到ToolBarComponent的页面模块,不需要再声明组件,只需要在自己的imports数组中引入上一步导出了Toolbar的那个模块即可,以你的Destiny页模块为例:
@NgModule({
  // 删除declarations里的ToolBarComponent
  declarations: [DestinyPage, ModalDestinyPage],
  imports: [
    CommonModule,
    // 新增导入声明了Toolbar的模块
    YourExistingModule
  ]
})
export class DestinyPageModule {}

之前尝试失败的原因说明

直接把ToolBarComponent放到其他模块的imports数组报错,是因为Angular的imports数组仅接受NgModule类,不接受组件类,ɵmod是Angular编译NgModule时才会生成的属性,组件本身没有这个属性所以会报错。
认为工具栏没有单独页面就不能对应模块的理解有误,Angular的模块不需要绑定对应页面,仅用来封装可复用的组件、指令、管道即可,是官方推荐的跨模块复用公共组件的标准方案。

内容的提问来源于stack exchange,提问作者Pedro Azevedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 04:45:04