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
相关产品推荐
相关产品推荐

