Injectable类实例化时不会调用ngOnInit

Injectable类被parsing时为什么不ngOnInit()

 import {Injectable, OnInit} from 'angular2/core'; import { RestApiService, RestRequest } from './rest-api.service'; @Injectable() export class MovieDbService implements OnInit { constructor(private _movieDbRest: RestApiService){ window.console.log('FROM constructor()'); } ngOnInit() { window.console.log('FROM ngOnInit()'); } } 

控制台输出

 FROM constructor() 

OnInit()这样的生命周期钩子可以处理指令和组件。 他们不与其他types的工作,如在你的情况下的服务。 从文档:

组件有一个由Angular自己pipe理的生命周期。 Angular创build它,渲染它,创build和渲染它的子项,当它的数据绑定属性发生变化时检查它,并在从DOM中删除它之前销毁它。

Directive和组件实例有一个生命周期,Angular创build,更新并破坏它们。

我不知道所有的生命周期钩子,但至于销毁ngOnDestroy实际上是当它的提供者被销毁时(例如一个组件提供的Injectable)在Injectable上调用。

从文档( https://angular.io/docs/ts/latest/api/core/index/OnDestroy-class.html ):

在指令,pipe道或服务被销毁时调用的生命周期钩子。

以防万一任何人有兴趣销毁像这样的问题: 在angular2中的服务的生命周期方法

服务的生命周期方法已经被其他人所覆盖,我一般分享我关于生命周期方法的概念

Angular 4生命周期方法

ngOnInit()ngOnChanges()ngOnDestroy()等是生命周期方法。 ngOnChanges()将在ngOnInit()之前被第一个调用,当绑定属性的值发生变化时,如果没有变化,它将不会被调用。 ngOnDestroy()在组件被移除时被调用。 要使用它, OnDestroy需要由类实现。