首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >angular2中服务的生命周期方法

angular2中服务的生命周期方法
EN

Stack Overflow用户
提问于 2016-03-24 05:24:23
回答 2查看 26.3K关注 0票数 36

是否可以为使用@Injectable()注释的服务设置生命周期挂钩

我本以为生命周期钩子会在这样的服务上调用,但事实证明我错了,它似乎只在@Component上工作。当依赖注入创建/销毁服务时,有没有办法在服务中得到通知?

代码语言:javascript
复制
import {Component, Injectable, OnInit, OnDestroy} from 'angular2/core';

@Injectable()
export class SampleService implements OnInit, OnDestroy {
    ngOnInit() {
        console.log("OnInit")
    }
    ngOnDestroy() {
        console.log("OnDestroy")
    }
}

@Component({
  selector: "sample",
  template: "<div>Sample Component</div>",
  providers: [ SampleService ]
})
export class SampleComponent {
  constructor() { private _sampleService: SampleService }
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-24 05:40:01

可注入类只是普通类(普通对象),因此,它们没有特殊的生命周期。

当你的类的一个对象被创建时,类的构造函数就会被调用,这就是你的“OnInit”。至于销毁,服务并没有真正被销毁。唯一可能发生的事情是,一旦不再有对它的引用,它就会被垃圾回收,这很可能发生在依赖项注入器本身被移除之后。但是您通常无法控制它,而且在JavaScript中也没有解构函数的概念。

代码语言:javascript
复制
@Injectable()
export class SampleService {
    constructor() {
        console.log('Sample service is created');
    }
}
票数 34
EN

Stack Overflow用户

发布于 2016-03-24 05:40:21

您显示的ngOn*生命周期挂钩仅适用于组件。您可以将另一个服务(称为TrackServiceLifecycles)注入到SampleService中,并让SampleService的构造函数()调用另一个服务上的方法,以通知它已创建该服务。但是当SampleService被销毁(垃圾回收)时,我想不出通知其他服务的方法。

另请参阅ECMAScript 6 class destructor

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

https://stackoverflow.com/questions/36188966

复制
相关文章

相似问题

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