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

何时将Service注入Angular 2模块级别和App组件级别

发布时间:2020-12-17 09:04:03 所属栏目:安全 来源:网络整理
导读:我一直在关注PluralSight中的Angular 2入门,我看到创建的一些服务被注入App组件和模块组件中. 这是一个例子: 在Angular 2中创建RouterGuard时,创建的RouterGuard服务将注入模块级别,但某些自定义服务仅注入App Component级别.我的问题是,我应该何时将服务注
我一直在关注PluralSight中的Angular 2入门,我看到创建的一些服务被注入App组件和模块组件中.

这是一个例子:

在Angular 2中创建RouterGuard时,创建的RouterGuard服务将注入模块级别,但某些自定义服务仅注入App Component级别.我的问题是,我应该何时将服务注入到模块级别以及何时仅注入App组件级别.

谢谢!

实际上,您可以在模块级别和组件级别提供服务.您可以在模块级别提供服务,方法是将其列在NgModule的providers数组中,如下所示:
@NgModule({
    declarations: [
        ...
    ],imports: [
        ...
    ],providers: [MyService],bootstrap: [AppComponent]
})

执行此操作时,您将在整个模块和所有子项中提供相同的实例.

但是,有时您可能希望为组件提供单独的服务实例.在这种情况下,您可以通过在组件装饰器的providers数组中列出它来在组件级别提供服务,如下所示:

@Component({
    templateUrl: './app.component.html',providers: [MyService]
})

这为该组件提供了一个新的服务实例.

想要在模块级别提供服务的一个示例是,您将使用服务来保存由多个组件共享的数据.这可以使用存储在服务中但由多个组件使用的变量或可观察对象.另一次你想要在Module级别提供服务的是你的服务是无状态的(只返回来自Http调用的observable).在这些场景中,拥有共享实例是有意义的.

其他时候,您可能希望提供也包含数据的服务,但您希望每个组件都拥有自己的实例.在这种情况下,在组件级别提供服务是有意义的.

希望有所帮助.

(编辑:李大同)

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

    推荐文章
      热点阅读