真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Angular之constructor和ngOnInit差異有哪些

小編給大家分享一下Angular之constructor和ngOnInit差異有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)公司是專業(yè)的孝南網(wǎng)站建設(shè)公司,孝南接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行孝南網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

區(qū)別

constructor是ES6引入類的概念后新出現(xiàn)的東東,是類的自身屬性,并不屬于Angular的范疇,所以Angular沒(méi)有辦法控制constructor。constructor會(huì)在類生成實(shí)例時(shí)調(diào)用:

import {Component} from '@angular/core';

@Component({
  selector: 'hello-world',
  templateUrl: 'hello-world.html'
})

class HelloWorld {
  constructor() {
    console.log('constructor被調(diào)用,但和Angular無(wú)關(guān)');
  }
}

// 生成類實(shí)例,此時(shí)會(huì)調(diào)用constructor
new HelloWorld();

既然Angular無(wú)法控制constructor,那么ngOnInit的出現(xiàn)就不足為奇了,畢竟槍把子得握在自己手里才安全。

ngOnInit的作用根據(jù)官方的說(shuō)法:

ngOnInit用于在Angular第一次顯示數(shù)據(jù)綁定和設(shè)置指令/組件的輸入屬性之后,初始化指令/組件。

ngOnInit屬于Angular生命周期的一部分,其在第一輪ngOnChanges完成之后調(diào)用,并且只調(diào)用一次:

import {Component, OnInit} from '@angular/core';

@Component({
  selector: 'hello-world',
  templateUrl: 'hello-world.html'
})

class HelloWorld implements OnInit {
  constructor() {

  }

  ngOnInit() {
    console.log('ngOnInit被Angular調(diào)用');
  }
}

constructor適用場(chǎng)景

即使Angular定義了ngOnInit,constructor也有其用武之地,其主要作用是注入依賴,特別是在TypeScript開(kāi)發(fā)Angular工程時(shí),經(jīng)常會(huì)遇到類似下面的代碼:

import { Component, ElementRef } from '@angular/core';

@Component({
  selector: 'hello-world',
  templateUrl: 'hello-world.html'
})
class HelloWorld {
  constructor(private elementRef: ElementRef) {
    // 在類中就可以使用this.elementRef了
  }
}

constructor中注入的依賴,就可以作為類的屬性被使用了。

ngOnInit適用場(chǎng)景

ngOnInit純粹是通知開(kāi)發(fā)者組件/指令已經(jīng)被初始化完成了,此時(shí)組件/指令上的屬性綁定操作以及輸入操作已經(jīng)完成,也就是說(shuō)在ngOnInit函數(shù)中我們已經(jīng)能夠操作組件/指令中被傳入的數(shù)據(jù)了:

// hello-world.ts
import { Component, Input, OnInit } from '@angular/core';

@Component({
  selector: 'hello-world',
  template: `

Hello {{name}}!

` }) class HelloWorld implements OnInit {   @Input()   name: string;   constructor() {     // constructor中還不能獲取到組件/指令中被傳入的數(shù)據(jù)     console.log(this.name);   // undefined   }   ngOnInit() {     // ngOnInit中已經(jīng)能夠獲取到組件/指令中被傳入的數(shù)據(jù)     console.log(this.name);   // 傳入的數(shù)據(jù)   } }

所以我們可以在ngOnInit中做一些初始化操作。

看完了這篇文章,相信你對(duì)“Angular之constructor和ngOnInit差異有哪些”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


當(dāng)前題目:Angular之constructor和ngOnInit差異有哪些
鏈接URL:http://weahome.cn/article/giijdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部