gpt4 book ai didi

Angular 6 服务 : providedIn: 'root' vs CoreModule

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

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

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

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

来自 Angular 文档:当你在根级别提供服务时,Angular 会创建一个单一的、共享的 HeroService 实例,并注入(inject)到任何需要它的类中。在 @Injectable 元数据中注册提供者还允许 Angular 通过删除服务来优化应用程序,如果它最终不再被使用的话。

此外,

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

那么,这是否意味着我们不再需要 CoreModule ?我们可以将服务和其他公共(public)模块直接导入 AppModule。

最佳答案

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

There are two ways to make a service a singleton in Angular: Declare root for the value of the @Injectable() providedIn property

Include the service in the AppModule or in a module that is only imported by the AppModule

我在这里找到了这个 Singleton Services doc

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

关于 Angular 6 服务 : providedIn: 'root' vs CoreModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50860898/

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