gpt4 book ai didi

angular - 以 Angular 6+ 向指定模块注入(inject)服务

转载 作者:行者123 更新时间:2023-12-02 19:51:37 24 4
gpt4 key购买 nike

当使用 angular-cli 创建新服务时,该服务将使用 @Injectable 装饰器在根级别注入(inject)。

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

但我不想要根级别的服务,我只想在指定的模块中使用它。在 ng6 之前,这可以通过将 he serves only 添加到指定模块的 providers 数组中来实现。这在 ng6+ 中仍然是正确的方法吗

最佳答案

服务被注入(inject)到组件、指令、服务等的构造函数中,它们在根、模块或组件级别提供。没有在模块级别注入(inject)服务的概念。您可以在模块级别提供服务,这意味着该服务的同一个实例将被注入(inject)到请求该服务的模块的所有项目中。如果您的服务仅在单个模块中使用,那么在根或模块级别提供它根本没有区别,最终结果是所有注入(inject)请求都获得相同的实例。

只在根级别提供所有服务而不用担心它们使用的位置是很好的。唯一需要在根目录之外提供服务的情况是,当您希望在不同位置提供唯一的服务实例时。只是说组件层次结构与共享服务共享数据并且您不希望该数据在组件外部可用然后您让最顶层的组件提供服务然后该组件的所有子组件将获得相同的实例但另一个父组件的实例将拥有它自己的唯一实例。

在 root 中引入 provided 后,在模块级别提供组件并不是真正必要的。

关于angular - 以 Angular 6+ 向指定模块注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58055949/

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