dependency-injection – angular2中服务的生命周期方法

参见英文答案 > ngOnInit not being called when Injectable class is Instantiated3个
是否可以为使用@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 }
}
注入只是普通类(普通对象),因此它们没有特殊的生命周期.

创建类的对象时,将调用类的构造函数,这就是“OnInit”的含义.至于破坏,服务并没有真正被破坏.唯一可能发生的事情是,一旦不再引用它就会收集垃圾,这可能是在依赖注入器自身被删除之后发生的.但是你通常无法控制它,并且JavaScript中没有解构函数的概念.

@Injectable()
export class SampleService {
    constructor() {
        console.log('Sample service is created');
    }
}

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...