You need to enable JavaScript to run this app. Angular8升9后Primeng DynamicDialog报ngfactory模块找不到报错问题
优惠活动
大模型
产品
解决方案
定价
更多

Angular8升9后Primeng DynamicDialog报ngfactory模块找不到报错问题

解决方案

1. 修正模块导入路径大小写

你当前组件内的导入路径存在大小写错误,Primeng 9.x 版本中 dynamicdialog 相关依赖的导出路径为全小写格式,Angular 9 的 Ivy 编译器对模块路径大小写敏感度极高,大小写不一致会直接导致编译时无法找到对应模块的工厂文件。
将所有组件中相关导入语句修改为如下格式:

import { DynamicDialogRef } from 'primeng/dynamicdialog';
import { DialogService } from 'primeng/dynamicdialog';
import { DynamicDialogConfig } from 'primeng/dynamicdialog';

2. 补充根模块服务注册

确认 AppModule 的 providers 数组中已经注册了 DialogService,DynamicDialog 依赖该服务全局生效:

import { DialogService } from 'primeng/dynamicdialog';
@NgModule({
  imports: [
    // 其他导入
    DynamicDialogModule
  ],
  providers: [
    // 其他服务
    DialogService
  ]
})

3. 清除编译缓存与依赖残留

旧版本的编译缓存、损坏的依赖文件也可能引发该报错,按如下步骤重置依赖:

  • 删除项目根目录下的 node_modules 文件夹、package-lock.json 或 yarn.lock 文件
  • 执行缓存清理命令:npm cache clean --force
  • 重新安装依赖:npm install

4. 可选编译配置调整

如果执行完上述步骤仍然报错,可以在 angular.json 的构建配置中添加参数兼容路径解析:

{
  "projects": {
    "你的项目名": {
      "architect": {
        "build": {
          "options": {
            "preserveSymlinks": true
          }
        }
      }
    }
  }
}

注:app.module.ngfactory.js 是AOT编译阶段自动生成的临时文件,不需要手动在项目目录中创建或修改,上述问题修复后编译时会自动生成该文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:06:02