Angular 2
Crochets de cycle de vie
Recherche…
Remarques
Disponibilité des événements
AfterViewInit
et AfterViewChecked
ne sont disponibles que dans les composants et non dans les directives .
Ordre des événements
-
OnChanges
(plusieurs fois) -
OnInit
(une fois) -
DoCheck
(plusieurs fois) -
AfterContentInit
(une fois) -
AfterContentChecked
(plusieurs fois) -
AfterViewInit
(une fois) (composant uniquement) -
AfterViewChecked
(plusieurs fois) (Composant uniquement) -
OnDestroy
(une fois)
Lectures complémentaires
OnInit
Fired lorsque les propriétés du composant ou de la directive ont été initialisées.
(Avant ceux des directives enfants)
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
Déclenché lorsque l'instance du composant ou de la directive est détruite.
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 !');
}
}
Modifications
Déclenché quand une ou plusieurs des propriétés du composant ou de la directive ont été modifiées.
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);
}
}
L'événement de modification se connectera
name: {
currentValue: 'new name value',
previousValue: 'old name value'
},
message: {
currentValue: 'new message value',
previousValue: 'old message value'
}
AfterContentInit
Le feu après l'initialisation du contenu du composant ou de la directive est terminé.
(Juste après 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
Feu après que la vue a été complètement initialisée.
(Disponible uniquement pour les composants)
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 déclenche après l'initialisation de la vue du composant et de ses vues enfants. Ceci est un crochet de cycle de vie utile pour les plugins en dehors de l'écosystème Angular 2. Par exemple, vous pouvez utiliser cette méthode pour initialiser un sélecteur de date jQuery basé sur le balisage rendu par Angular 2.
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
Le feu après la vérification de la vue, du composant, est terminé.
(Disponible uniquement pour les composants)
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
Permet d'écouter les modifications uniquement sur les propriétés spécifiées
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));
}
}
}