通过构造函数注入进行角度缓存依赖关系



我有一个非常奇怪的情况。

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

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

Question 2(注入构造函数时是否有角度缓存依赖关系?

问题3(谁的工作是缓存依赖关系?它是我们在模块中使用的提供程序的对象吗?

  1. 这两个组件将具有相同的Instance具体取决于提供的服务级别。您可以在模块和组件中提供服务。如果它是在两个组件都驻留在其中而没有其他位置的模块中提供的,则两者将具有相同的实例。如果它只是在父组件中提供,那么两者将再次具有相同的实例。如果在两个组件中都提供了它,那么就会有不同的实例。
  2. 不,当我们提供时,它会这样做。(使用术语cache对我来说似乎不对,但是是的。
  3. 是的,当我们提供时,这就是 angular 将创建单例的时候。

最新更新