Angular 2
Ganchos de ciclo de vida
Buscar..
Observaciones
Disponibilidad de eventos
AfterViewInit
y AfterViewChecked
solo están disponibles en Componentes , y no en Directivas .
Orden de eventos
-
OnChanges
(varias veces) -
OnInit
(una vez) -
DoCheck
(varias veces) -
AfterContentInit
(una vez) -
AfterContentChecked
(varias veces) -
AfterViewInit
(una vez) (solo componente) -
AfterViewChecked
(varias veces) (solo componente) -
OnDestroy
(una vez)
Otras lecturas
OnInit
Se activa cuando se han inicializado las propiedades de componente o directiva.
(Antes de las de las directivas infantiles).
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 !');
}
}
EnDestroy
Se activa cuando se destruye la instancia del componente o directiva.
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
Se activa cuando una o más de las propiedades del componente o directiva han sido cambiadas.
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);
}
}
En el evento de cambio se registrará
name: {
currentValue: 'new name value',
previousValue: 'old name value'
},
message: {
currentValue: 'new message value',
previousValue: 'old message value'
}
AfterContentInit
Incendio una vez finalizada la inicialización del contenido del componente o directiva.
(Justo después de 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
Disparar después de que la vista haya sido completamente inicializada.
(Solo disponible para componentes)
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
Se activa después de inicializar la vista de componente y cualquiera de sus vistas secundarias. Este es un útil gancho de ciclo de vida para complementos fuera del ecosistema de Angular 2. Por ejemplo, podría usar este método para inicializar un selector de fecha jQuery en función del marcado que Angular 2 ha renderizado.
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
Disparo después de que se haya verificado la vista, del componente.
(Solo disponible para componentes)
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
Permite escuchar cambios solo en propiedades especificadas
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));
}
}
}