代码之家  ›  专栏  ›  技术社区  ›  jsgoupil

如何在Angular7中清除要与UseFactory一起使用的提供程序缓存

  •  0
  • jsgoupil  · 技术社区  · 7 年前

    我正在动态创建元素,其中一个元素正在使用 @Inject 解析为工厂的令牌。

    问题是工厂实例缓存在节点索引上。一旦我的元素从视图中消失并返回,我希望得到对工厂函数的调用;但我没有。相反,我得到了这个工厂实例的缓存版本。

    enter image description here

    如何确保对象从视图中消失后不使用缓存?

    基本上,当我 @Component 构造函数被调用,我期待一个全新的服务。不是缓存服务。

    @Inject(FORM_GROUP_MANAGER_SERVICE)
    private formGroupManagerService: FormGroupManagerServiceImpl
    
    {
        provide: FORM_GROUP_MANAGER_SERVICE,
        useFactory: (structureControlService, createTonicControlFactory, parent) => new FormGroupManagerService(
            structureControlService,
            createTonicControlFactory,
            parent
        ),
        deps: [StructureControlService, FORM_GROUP_MANAGER_SERVICE_CREATE_CONTROL, [new Optional(), FormGroupManagerService]]
    },
    
    0 回复  |  直到 7 年前
        1
  •  3
  •   Jota.Toledo    7 年前

    这确实有一个功能请求 in the angular repo 但现在我可以想出2种办法:

    • 直接注入工厂方法,而不是它的已解析实例。这样,它的客户机就可以自己解析实例,从而使它对解析对象的生存期也负责。

    • 在注册工厂提供程序 指令/组件级 作为 in this blitz

    推荐文章