是否可以为使用@Injectable()
注释的服务设置生命周期挂钩
我本以为生命周期钩子会在这样的服务上调用,但事实证明我错了,它似乎只在@Component
上工作。当依赖注入创建/销毁服务时,有没有办法在服务中得到通知?
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 }
}
发布于 2016-03-24 05:40:01
可注入类只是普通类(普通对象),因此,它们没有特殊的生命周期。
当你的类的一个对象被创建时,类的构造函数就会被调用,这就是你的“OnInit”。至于销毁,服务并没有真正被销毁。唯一可能发生的事情是,一旦不再有对它的引用,它就会被垃圾回收,这很可能发生在依赖项注入器本身被移除之后。但是您通常无法控制它,而且在JavaScript中也没有解构函数的概念。
@Injectable()
export class SampleService {
constructor() {
console.log('Sample service is created');
}
}
发布于 2016-03-24 05:40:21
您显示的ngOn*生命周期挂钩仅适用于组件。您可以将另一个服务(称为TrackServiceLifecycles)注入到SampleService中,并让SampleService的构造函数()调用另一个服务上的方法,以通知它已创建该服务。但是当SampleService被销毁(垃圾回收)时,我想不出通知其他服务的方法。
https://stackoverflow.com/questions/36188966
复制相似问题