Angular - ngOnInit - Angular LifeCycle Hook

  • 170
  • 0
  • 2018-05-16

介紹 component 宣告物件的觀念

當我們透過Angular CLI指令產生component的時候,

一開始產生的component.ts 會長這樣

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

@Component({
  selector: 'app-demo2',
  templateUrl: './demo2.component.html',
  styleUrls: ['./demo2.component.css']
})
export class Demo2Component implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

由上面的結構可看到,

預設就會產生一個 建構式:constructor

也會幫我們import OnInit 這個interface,以及實作方法

ngOnInit() {}

 

建構式constructor

在component被建立的時候最先執行的function,

通常我們只會在這邊需告要相依注入(DI)的Service,

如果要初始化 component 的內容,要在ngOnInit() 裡面去初始化,

而不是在 建構式constructor 內,

因為建構式在初始化的時候,父元件(component) 傳來的資料還沒有準備好

例如: 宣告了一個 @Input() item;

這個item 是接受父元件(component)傳來的資料,這時候如果我要在 建構式constructor 裡面使用item的值,就會出現錯誤。

constructor 執行完畢之後,才會執行 ngOnInit(){}

結論:要初始化component內的物件內容,寫在 ngOnInit(){} 內。