Angular 2
라이프 사이클 후크
수색…
비고
이벤트 가용성
AfterViewInit
및 AfterViewChecked
는 지시문이 아닌 구성 요소 에서만 사용할 수 있습니다.
이벤트 주문
-
OnChanges
(여러 번) -
OnInit
(한 번) -
DoCheck
(여러 번) -
AfterContentInit
(한 번) -
AfterContentChecked
(여러 번) -
AfterViewInit
(한 번) (구성 요소 만) -
AfterViewChecked
(여러 번) (구성 요소 만) -
OnDestroy
(한 번)
더 읽을 거리
OnInit
구성 요소 또는 지시문 속성이 초기화 될 때 발생합니다.
(어린이 지침 이전에)
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'so-oninit-component',
templateUrl: 'oninit-component.html',
styleUrls: ['oninit-component.']
})
class OnInitComponent implements OnInit {
ngOnInit(): void {
console.log('Component is ready !');
}
}
OnDestroy
구성 요소 또는 지시문 인스턴스가 파괴되면 시작됩니다.
import { Component, OnDestroy } from '@angular/core';
@Component({
selector: 'so-ondestroy-component',
templateUrl: 'ondestroy-component.html',
styleUrls: ['ondestroy-component.']
})
class OnDestroyComponent implements OnDestroy {
ngOnDestroy(): void {
console.log('Component was destroyed !');
}
}
OnChanges
하나 이상의 구성 요소 또는 지시문 속성이 변경되면 시작됩니다.
import { Component, OnChanges, Input } from '@angular/core';
@Component({
selector: 'so-onchanges-component',
templateUrl: 'onchanges-component.html',
styleUrls: ['onchanges-component.']
})
class OnChangesComponent implements OnChanges {
@Input() name: string;
message: string;
ngOnChanges(changes: SimpleChanges): void {
console.log(changes);
}
}
변경 이벤트가 발생하면 로그에 기록됩니다.
name: {
currentValue: 'new name value',
previousValue: 'old name value'
},
message: {
currentValue: 'new message value',
previousValue: 'old message value'
}
AfterContentInit
구성 요소 또는 지시문의 내용을 초기화 한 후 화재가 끝났습니다.
(OnInit 직후)
import { Component, AfterContentInit } from '@angular/core';
@Component({
selector: 'so-aftercontentinit-component',
templateUrl: 'aftercontentinit-component.html',
styleUrls: ['aftercontentinit-component.']
})
class AfterContentInitComponent implements AfterContentInit {
ngAfterContentInit(): void {
console.log('Component content have been loaded!');
}
}
AfterContentChecked
보기가 끝난 후 실행이 완전히 초기화되었습니다.
(구성 요소에만 사용 가능)
import { Component, AfterContentChecked } from '@angular/core';
@Component({
selector: 'so-aftercontentchecked-component',
templateUrl: 'aftercontentchecked-component.html',
styleUrls: ['aftercontentchecked-component.']
})
class AfterContentCheckedComponent implements AfterContentChecked {
ngAfterContentChecked(): void {
console.log('Component content have been checked!');
}
}
AfterViewInit
구성 요소보기와 해당 자식보기를 모두 초기화 한 후에 발생합니다. 이것은 Angular 2 에코 시스템 외부의 플러그인에 대한 유용한 라이프 사이클 후크입니다. 예를 들어이 방법을 사용하여 Angular 2가 렌더링 한 마크 업을 기반으로 jQuery 날짜 선택 도구를 초기화 할 수 있습니다.
import { Component, AfterViewInit } from '@angular/core';
@Component({
selector: 'so-afterviewinit-component',
templateUrl: 'afterviewinit-component.html',
styleUrls: ['afterviewinit-component.']
})
class AfterViewInitComponent implements AfterViewInit {
ngAfterViewInit(): void {
console.log('This event fire after the content init have been loaded!');
}
}
AfterViewChecked
구성 요소의보기 확인 후 화재가 끝났습니다.
(구성 요소에만 사용 가능)
import { Component, AfterViewChecked } from '@angular/core';
@Component({
selector: 'so-afterviewchecked-component',
templateUrl: 'afterviewchecked-component.html',
styleUrls: ['afterviewchecked-component.']
})
class AfterViewCheckedComponent implements AfterViewChecked {
ngAfterViewChecked(): void {
console.log('This event fire after the content have been checked!');
}
}
DoCheck
지정된 속성에서만 변경 사항을 수신 대기
import { Component, DoCheck, Input } from '@angular/core';
@Component({
selector: 'so-docheck-component',
templateUrl: 'docheck-component.html',
styleUrls: ['docheck-component.']
})
class DoCheckComponent implements DoCheck {
@Input() elements: string[];
differ: any;
ngDoCheck(): void {
// get value for elements property
const changes = this.differ.diff(this.elements);
if (changes) {
changes.forEachAddedItem(res => console.log('Added', r.item));
changes.forEachRemovedItem(r => console.log('Removed', r.item));
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow