angular学习笔记之ngOnInit方法和constructor的区别

本文探讨Angular中constructor和ngOnInit的区别。constructor是类的构造函数,用于对象实例化时初始化和属性赋值,而ngOnInit是初始化组件的生命周期钩子,执行在数据绑定和设置组件输入属性之后。constructor在ngOnInit之前执行,并且不适用于处理输入属性,因为它无法在构造函数中获取到输入属性的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      最近在学习angular英雄demo时,发现中文文档上说了如图这一段话;虽然这里介绍了ngOnInit方法和constructor的区别,但是我觉得太过笼统。为什么构造器不能调用某个函数来向远端发送http请求(虽然在构造器中处理逻辑不规范),于是自己找了些资料整理了一下。

1、constructor

    constructor是class的构造函数,当对象被实例化的时候被调用;这里经常处理初始化和给属性赋值的动作;如图:

    

    

2、ngOnInit

    ngOnInit是实现了OnInit生命钩子,用来初始化组件;在官网的文档上的说明如下:


区别:

    1)执行顺序,constructor和ngOnInit都能进行初始化,那它们的执行先后顺序是什么呢?看下图demo


        我们发现constructor是在ngOnInit之前执行的,说明constructor是在组件实例化时就已经执行了;在官网文档中说ngOnInit是在第一次显示数据绑定和设置组件的输入属性之后,初始化组件的;那constructor是否能设置组件的输入属性呢?

    2)输入属性

HerosComponent是父组件

        HeroDetailComponent是子组件,pname为父组件的输入属性



运行结果:

说明在construct中取不到输入属性的值

所以官网文档中说 它肯定不能调用某个函数来向远端服务(比如真实的数据服务)发起 HTTP 请求。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值