实例化注入类时不调用 ngOnInit

2022-08-30 00:29:30

为什么在解析类时不调用?ngOnInit()Injectable

法典

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()

答案 1

生命周期挂钩,例如使用指令和组件。它们不适用于其他类型,例如您的案例中的服务。来自文档:OnInit()

组件的生命周期由 Angular 本身管理。Angular 创建它,渲染它,创建和渲染它的子级,在其数据绑定属性更改时检查它,并在从 DOM 中删除它之前销毁它。

指令和组件实例具有生命周期,因为 Angular 会创建、更新和销毁它们。


答案 2

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

文档 :

生命周期挂钩,在指令、管道或服务被破坏时调用。

以防万一有人对破坏感兴趣,请检查以下问题: