【问题标题】:does angular cache dependencies via constructor injection?角度缓存依赖是否通过构造函数注入?
【发布时间】:2026-02-16 00:30:01
【问题描述】:

我有一个很奇怪的情况。

我有一个名为Test1 的服务类,它有一个实例变量public account = new Subject(); 然后这个类被注入into 2 different components,但那些组件是parent-child。现在发生的是第一个组件的代码将某些内容更改为该实例变量(Test1's account)。事实证明,一旦发生此更改,另一个组件正在订阅它,并且当发生更改时,订阅发生,这导致我提出以下问题。

问题1)当服务类被注入到2个组件中时,假设它首先被注入到compA中,然后我认为在compB中,它是从缓存中注入的,并且两个组件具有相同的类。

问题 2) 注入构造函数时是否存在角度缓存依赖关系?

问题 3) 谁的工作是缓存依赖项?是我们在模块中使用的Provider的对象吗?

【问题讨论】:

    标签: angular


    【解决方案1】:
    1. 两个组件将具有相同的Instance,具体取决于提供的服务级别。您可以在模块和组件中提供服务。如果它是在两个组件都驻留的模块中提供的,并且没有其他位置,那么两者都将具有相同的实例。如果它只是在父组件中提供,那么两者都将具有相同的实例。如果在两个组件中都提供了它,那么会有不同的实例。
    2. 不,当我们提供时它会这样做。 (使用 cache 这个词对我来说似乎不对,但是是的..)
    3. 是的,当我们提供时,Angular 将创建单例。

    【讨论】: