gpt4 book ai didi

angular - 在 Angular 6 中生成服务时,providedIn 与 Injectable 装饰器的目的是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:45:56 26 4
gpt4 key购买 nike

当在 Angular CLI 中生成服务时,它会添加带有“provided in”属性的额外元数据,Injectable 装饰器的默认值为“root”。

@Injectable({
providedIn: 'root',
})

providedIn 到底做了什么?我假设这使服务像整个应用程序的“全局”类型单例服务一样可用,但是,在 AppModule 的提供者数组中声明此类服务不是更清晰吗?

最佳答案

providedIn: 'root' 是自 Angular 6 以来最简单、最有效的服务提供方式:

  1. 该服务将作为单例在整个应用程序范围内可用,无需将其添加到模块的提供程序数组(如 Angular <= 5)。
  2. 如果该服务仅在延迟加载的模块中使用,它将与该模块一起延迟加载
  3. 如果从未使用过,它将不会包含在构建中(摇树)。

有关更多信息,请考虑阅读 documentationNgModule FAQs

顺便说一句:

  1. 如果您不希望应用程序范围内的单例,请改用提供者的组件数组。
  2. 如果您想限制范围,以便其他开发人员永远不会在特定模块之外使用您的服务,请改用 NgModule 的 providers 数组。

关于angular - 在 Angular 6 中生成服务时,providedIn 与 Injectable 装饰器的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50848357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com