角度中的单例服务

问题描述 投票:0回答:1
  1. ProviderIn: 'root';使 Angular 服务成为单例,我从单例这个词中理解的是整个应用程序有一个公共实例。

  2. 如果我在两个组件的构造函数中实例化该服务(从类创建对象),这意味着我正在创建 2 个 diff 对象,它与第一个语句相矛盾。

有人可以解释一下在这种情况下单例意味着什么吗?

javascript angular service frontend singleton
1个回答
0
投票

Angular 使用 DI(依赖注入)为您提供服务,无需实例化任何服务。

providedIn: 'root'
为整个应用程序创建一个类的单例。

如果您想添加仅针对模块的单例服务,请将其添加到模块或组件或独立组件的提供者数组中


当你像这样实例化自己的类(

this.classVar = new Test();
)时,这不在Angular
Dependency injection
的范围内,因此用户有责任设计代码以使其在组件之间工作,Angular使用构造函数定义并在用户请求时使用
inject
向用户提供所需的服务。

当用户实例化自己的类时,用户有责任照顾实例,因此 Angular 正在按照规则工作!

© www.soinside.com 2019 - 2024. All rights reserved.