Angular 6 服务:providIn:“root”与 CoreModule

2024-01-16

对于 Angular 6,以下是创建单例服务的首选方法:

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class UserService {
}

来自角度文档: 当您在根级别提供服务时,Angular 会创建 HeroService 的单个共享实例,并将其注入任何需要它的类中。在 @Injectable 元数据中注册提供程序还允许 Angular 通过删除该服务来优化应用程序(如果最终没有使用该服务)。

Also,

providers: [
    // no need to place any providers due to the `providedIn` flag...
  ]

那么,这是否意味着我们不再需要核心模块 https://angular.io/guide/styleguide#core-feature-module?我们可以将服务和其他常用模块直接导入到AppModule中。


好吧,我认为它是创建 CoreModule 的替代方案,文档明确指出:

在 Angular 中,有两种方法可以使服务成为单例: 声明 @Injectable()providIn 属性的值的根

将服务包含在 AppModule 或仅由 AppModule 导入的模块中

我在这里找到了这个单例服务文档 https://angular.io/guide/singleton-services

如果您的应用程序有一个纯服务的 CoreModule,您可以简单地摆脱它(当然,如果您认为没有必要),尽管我不推荐它,但对我来说,我认为拥有一个 CoreModule 更容易维护,因为我可以轻松地在项目中找到它,并告诉我哪些服务对于应用程序来说是基础服务,我们只需要其中的一个实例,而不必在 IDE 中打开搜索对话框并查找具有该服务的所有服务providedIn: 'root' setted.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 6 服务:providIn:“root”与 CoreModule 的相关文章

随机推荐