- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
只是想确保我理解 @Injectable(providedIn: 'root')
的语义。 在 Angular 6 之前,如果我们从 NPM 导入一个包含服务的模块,我们将在我们的应用程序模块中声明该模块,以便整个应用程序都可以访问该服务。像这样:
import { SomeNPModule } from '@ngx/SomeNPModule';
@NgModule({
imports: [
BrowserModule,
SomeNPModule
]
})
export class AppModule {}
现在我们可以注入(inject)模块提供的SomeService
,因为我们已经导入了模块。在 Angular 6 中,不需要将 SomeNPModule
导入到 AppModule
中,因为我们在服务上使用了 @Injectable(providedIn: 'root
)本身,当注释运行时,它会自动使服务在 root
注入(inject)容器中可用吗?
所以我们有了答案,但我认为它是部分完整的,如果我们想要配置服务,这通常是通过服务模块上的 forRoot
方法完成的...正如通过 Router
完成的那样。所以假设我们不想配置服务,我们需要做的就是注入(inject)它,但是如果我们想要配置服务,我们需要遵循 Router
模式。如果我在评论中有任何错误,请纠正我。
最佳答案
当您编写 @Injectable(providedIn: 'root')
时,这意味着整个应用程序的服务都是单例的,您可以在应用程序的任何地方注入(inject)。
当你只想为一个确切的模块创建服务单例时,你需要将你的模块作为参数分配给 providedIn
- @Injectable(providedIn: MyModule)
为了使用 @Injectable
修饰服务,唯一需要的其他操作是导入它,构造函数注入(inject)它,仅此而已。无需在 AppModule
中导入它。
关于angular - @Injectable 的语义(providedIn : 'root' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51990188/
我正在尝试借助 Angular 的教程创建服务 https://angular.io/guide/http 我正在使用 Angular 7.0.7。 该服务将从一些 url 获取 json 数据: i
我已经彻底阅读了文档,虽然我找不到它的确切引用位置,但我的印象是在急切加载的模块的 providers 数组中声明服务将使单例可用到应用范围。如果这是真的, Is using @Injectable
我正在尝试将我的应用程序从 Angular v5 迁移到 v6,但在尝试在我的提供程序中指定 providedIn 时遇到以下 typescript 错误 Argument type {provide
在 Angular 9 中,可注入(inject)装饰器选项 providedIn有一个名为 any 的新值. root 和有什么区别和 any ? 在我使用 any 的情况下,服务是否被视为单例?
只是想确保我理解 @Injectable(providedIn: 'root') 的语义。 在 Angular 6 之前,如果我们从 NPM 导入一个包含服务的模块,我们将在我们的应用程序模块中声明该
我尝试在 Angular 中使用“providedin”功能,但收到错误“StaticInjectorError(AppModule)[DashboardComponent -> DashboardS
在 Angular 5 中,如果我有扩展抽象的 AbstractClassService 和 ExtendedClassService,我可以在我的 NgModule 的提供者数组中这样做: @NgM
对于 Angular 6,以下是创建单例服务的首选方式: import { Injectable } from '@angular/core'; @Injectable({ providedIn:
当我使用 @Injectable({ providedIn: 'root' }) 消息 Expects 0 arguments but got 1. Any idea on what to d
我正在尝试通过新的 providedIn 属性提供解析服务。 这是我在 protected 模块中使用的翻译解析器: import { Injectable } from '@angular/core
当在 Angular CLI 中生成服务时,它会添加带有“provided in”属性的额外元数据,Injectable 装饰器的默认值为“root”。 @Injectable({ provide
我的服务位于src/core/services/api.service.ts import { Injectable } from '@angular/core'; @Injectable({ p
我是一名优秀的程序员,十分优秀!