gpt4 book ai didi

angular - 为什么不必导出提供程序?

转载 作者:行者123 更新时间:2023-12-05 07:11:48 25 4
gpt4 key购买 nike

我想知道为什么 Angular 中的提供者不必导出,而组件、指令和管道必须导出。所以,下面的代码工作得很好:

@NgModule({
exports: [],
providers: [
GreeterService
]
})
export class SharedModule {
}

如果我尝试将 GreeterService 添加到导出列表中,当然会出现错误:

Can't export value GreeterService from SharedModule as it was neither declared nor imported!

但这是为什么呢?为什么提供程序直接工作,当我导入提供它们的模块时,但组件、指令和管道必须显式导出?

最佳答案

根据服务的基本概念

  • 服务用@Injectable() 元数据装饰
  • 它将服务与组件/指令区分开来,供应商可以使用它来动态注入(inject)所需的组件。
  • 提供者告诉注入(inject)者如何创建服务。在注入(inject)器可以创建服务(或提供任何其他类型的依赖项)之前,您必须使用提供者配置注入(inject)器。

此外,服务对于应用程序来说是单例的,共享同一个实例,而组件/指令可以是多个。

更多详情

关于angular - 为什么不必导出提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60631206/

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