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

Storybook二次打开组件报错:Injector已销毁,求解决方案

Storybook Angular 组件切换后返回报错:Injector 已销毁

问题现象

首次打开任意Story组件时显示正常,但切换至其他组件后返回已打开过的组件时,抛出如下错误:

ERROR Error: NG0205: Injector has already been destroyed.
    at R3Injector.assertNotDestroyed (core.mjs:7986:1)
    at R3Injector.get (core.mjs:7893:1)
    at ChainedInjector.get (core.mjs:12088:1)
    at lookupTokenUsingModuleInjector (core.mjs:3217:1)
    at getOrCreateInjectable (core.mjs:3262:1)
    at NodeInjector.get (core.mjs:3527:1)
    at ViewContainerRef.createComponent (core.mjs:21300:1)
    at FormlyConfig.resolveFieldTypeRef (ngx-formly-core.mjs:411:1)
    at FormlyConfig.getMergedField (ngx-formly-core.mjs:390:1)
    at CoreExtension.initFieldOptions (ngx-formly-core.mjs:2111:1)

已尝试的无效方案

  • 在preview.js中配置angularLegacyRendering: true,未解决问题。

可行解决方案建议

  • 清理Formly相关资源:在使用Formly的组件的ngOnDestroy钩子中,取消所有Formly相关的订阅、清理动态创建的组件引用,避免组件销毁后仍有代码尝试访问已销毁的注入器。
  • 调整Storybook渲染配置:在.storybook/main.js中禁用Ivy渲染(项目兼容的前提下),配置如下:
    module.exports = {
      framework: {
        name: '@storybook/angular',
        options: { enableIvy: false },
      },
    };
    
  • 独立注入器管理:对于依赖Formly的组件,尝试创建组件级的独立注入器,替代全局注入器的依赖,确保组件重建时注入器能正确初始化。
  • 升级依赖版本:检查Storybook和ngx-formly的最新稳定版本,升级到修复了注入器生命周期问题的版本组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:43:18