首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Injectable(根:‘providedIn’)的语义?

@Injectable(根:‘providedIn’)的语义?
EN

Stack Overflow用户
提问于 2018-08-24 00:17:00
回答 1查看 3.4K关注 0票数 5

我只是想确保我理解了@Injectable(providedIn: 'root')的语义。在Angular 6之前,如果我们从NPM导入一个包含服务的模块,我们会在app模块中声明该模块,这样整个应用程序都可以访问该服务。如下所示:

代码语言:javascript
复制
    import { SomeNPModule } from '@ngx/SomeNPModule';

    @NgModule({
    imports: [
        BrowserModule,
        SomeNPModule
    ]
    })
    export class AppModule {}

现在我们可以注入模块提供的SomeService,因为我们已经导入了模块。在Angular 6中,不再需要将SomeNPModule导入到AppModule中,因为我们在服务本身上使用@Injectable(providedIn: 'root),并且当注释运行时,它会自动使服务在root注入容器中可用?

更新

所以我们有了答案,但我认为它在某种意义上是部分完成的,如果我们想要配置服务,这通常是通过服务的module...as上的forRoot方法通过Router完成的。因此,假设我们不想配置服务,所有我们需要做的就是注入它,但是如果我们想要一个已配置的服务,我们需要遵循Router模式。如果我在评论中有任何错误,请纠正我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 00:18:43

当你编写@Injectable(providedIn: 'root')时,这意味着整个应用程序的服务是单一的,你可以在应用程序的任何地方注入。

如果只想为某个确切的模块创建单独的服务,则需要将模块作为参数分配给providedIn - @Injectable(providedIn: MyModule)

要使用@Injectable修饰的服务,唯一需要的其他操作就是导入它并构造函数注入它,仅此而已。不需要在AppModule中导入它。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51990188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档