수색…


비고

이벤트 가용성

AfterViewInitAfterViewChecked지시문이 아닌 구성 요소 에서만 사용할 수 있습니다.

이벤트 주문

  • 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