ProviderIn: 'root';使 Angular 服务成为单例,我从单例这个词中理解的是整个应用程序有一个公共实例。
如果我在两个组件的构造函数中实例化该服务(从类创建对象),这意味着我正在创建 2 个 diff 对象,它与第一个语句相矛盾。
有人可以解释一下在这种情况下单例意味着什么吗?
Angular 使用 DI(依赖注入)为您提供服务,无需实例化任何服务。
providedIn: 'root'
为整个应用程序创建一个类的单例。
如果您想添加仅针对模块的单例服务,请将其添加到模块或组件或独立组件的提供者数组中
当你像这样实例化自己的类(
this.classVar = new Test();
)时,这不在AngularDependency injection
的范围内,因此用户有责任设计代码以使其在组件之间工作,Angular使用构造函数定义并在用户请求时使用 inject
向用户提供所需的服务。
当用户实例化自己的类时,用户有责任照顾实例,因此 Angular 正在按照规则工作!