本文介绍了实例化 Injectable 类时未调用 ngOnInit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么在解析 Injectable
类时不调用 ngOnInit()
?
Why isn't ngOnInit()
called when an Injectable
class is resolved?
代码
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()
与指令和组件一起工作.它们不适用于其他类型,例如您的服务.来自文档:
Lifecycle hooks, like OnInit()
work with Directives and Components. They do not work with other types, like a service in your case. From docs:
组件具有由 Angular 本身管理的生命周期.Angular 创建它,渲染它,创建并渲染它的子节点,在它的数据绑定属性改变时检查它,并在将它从 DOM 中删除之前销毁它.
指令和组件实例在 Angular 创建、更新和销毁它们时具有生命周期.
Directive and component instances have a lifecycle as Angular creates, updates, and destroys them.
这篇关于实例化 Injectable 类时未调用 ngOnInit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!