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

Angular9提交表单报Cannot read property 'sanitize' of null 原Angular8正常

问题原因分析

从报错栈可以定位到问题出在ng-jhipster库的JhiAlertService服务中,核心原因是Angular 9默认启用了IVY编译器,适配Angular 8的旧版本ng-jhipster没有兼容IVY的依赖注入规则,导致DomSanitizer没有被正确注入到JhiAlertService实例中,调用sanitize方法时就抛出了空指针错误。
你的业务代码中配置了全局通知拦截器,会在接口请求成功后自动调用JhiAlertService.success()弹出成功提示,这个拦截器的执行时机早于你业务代码中subscribe的成功回调,所以拦截器内先报错,错误会直接流转到subscribe的错误回调中,自然不会打印Data日志,看起来就像接口请求失败,但实际接口本身是正常的。

解决方案
  • 方案1:升级ng-jhipster到兼容Angular 9的版本
    ng-jhipster从7.0.0版本开始适配Angular 9和IVY编译器,直接升级依赖即可:
    npm install ng-jhipster@7
    # 若使用yarn则执行
    yarn add ng-jhipster@7
    
  • 方案2:临时关闭IVY编译器
    如果暂时不想升级依赖,可以在项目根目录的tsconfig.json中添加配置,用Angular 8时代的ViewEngine编译器编译,兼容旧版ng-jhipster:
    {
      "angularCompilerOptions": {
        "enableIvy": false
      }
    }
    
  • 方案3:临时验证问题
    可以先注释掉notification.interceptor.ts第34行调用JhiAlertService.success()的代码,测试接口请求是否能正常进入成功回调打印Data日志,确认问题根源是否为通知服务导致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:04