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

app.module.ts中的注册服务与angular4中的单个组件有什么好处?

发布时间:2020-12-17 17:43:19 所属栏目:安全 来源:网络整理
导读:例如,如果我在app.module.ts中注册服务,我必须执行以下操作以使组件中的服务可用 app.module.ts import { AppComponent } from './app.component';import { MyComponent } from './mycomponent/mycomponent.component';import { MyService } from './service
例如,如果我在app.module.ts中注册服务,我必须执行以下操作以使组件中的服务可用

app.module.ts

import { AppComponent } from './app.component';
import { MyComponent } from './mycomponent/mycomponent.component';
import { MyService } from './services/myservice.service';


@NgModule({
  declarations: [
    AppComponent,MyComponent
  ],imports: [
  ],providers: [MyService],bootstrap: [AppComponent]
})

mycomponent.component.ts

import { Component,OnInit } from '@angular/core';
import { MyService } from '../services/myservice.service';

@Component({
    selector: 'my-selector',templateUrl: './mycomponent.component.html',styleUrls: ['./my-component.component.scss']
})
export class MyComponent implements OnInit {

    constructor(private _myService: MyService) { }

    ngOnInit() {
        this._myService.test()
    }

}

但我也可以在组件本身注册使用它,而无需向app.module.ts添加任何内容

import { Component,styleUrls: ['./my-component.component.scss'],providers: [MyService]
})
export class MyComponent implements OnInit {

    constructor(private _myService: MyService) { }

    ngOnInit() {
        this._myService.test()
    }

}

我很好奇,每种方式有什么不同?

解决方法

在应用程序的根提供程序中添加服务时,所有组件都将注入相同的服务实例.因此在应用程序期间只会创建一个实例.在这种情况下,您可以在服务中保持状态.

在Component的提供程序中添加服务时,每次创建该组件的新实例时,也会创建新的服务实例.在这种情况下,您无法在此类服务中保持状态,

根据您的逻辑提供所需的位置,但通常情况下在根模块中提供所有服务.

(编辑:李大同)

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

    推荐文章
      热点阅读