加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – @Injectable的语义(providedIn:’root’)?

发布时间:2020-12-17 17:52:30 所属栏目:安全 来源:网络整理
导读:只是想确保我理解@Injectable(providedIn:’root’)的语义. ?在Angular 6之前,如果我们从包含服务的NPM导入模块,我们将在我们的app模块中声明该模块,以便整个应用程序可以访问该服务.像这样的东西: import { SomeNPModule } from '@ngx/SomeNPModule'; @Ng
只是想确保我理解@Injectable(providedIn:’root’)的语义.
?在Angular 6之前,如果我们从包含服务的NPM导入模块,我们将在我们的app模块中声明该模块,以便整个应用程序可以访问该服务.像这样的东西:

import { SomeNPModule } from '@ngx/SomeNPModule';

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

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

更新

所以我们有了答案,但我认为它是部分完成的,如果我们想要配置服务,这通常是通过服务模块上的forRoot方法完成的……就像通过路由器完成的那样.因此,假设我们不想配置服务,我们需要做的只是注入它,但如果我们想要一个配置的服务,我们需要遵循路由器模式.如果我在评论中犯了任何错误,请纠正我.

解决方法

当您编写@Injectable(providedIn:’root’)时,这意味着整个应用程序的服务单一,您可以在应用程序的任何位置注入.

如果只想为精确模块创建服务单例,则需要将模块作为参数分配给providedIn – @Injectable(providedIn:MyModule)

要使用@Injectable修饰服务所需的唯一其他操作是导入它,构造函数注入它就是这样.无需在AppModule中导入它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读