Angular 2
Haki cyklu życia
Szukaj…
Uwagi
Dostępność wydarzeń
AfterViewInit
i AfterViewChecked
są dostępne tylko w komponentach , a nie w dyrektywach .
Kolejność wydarzeń
-
OnChanges
(wiele razy) -
OnInit
(raz) -
DoCheck
(wiele razy) -
AfterContentInit
(raz) -
AfterContentChecked
(wiele razy) -
AfterViewInit
(jeden raz) (tylko składnik) -
AfterViewChecked
(wiele razy) (tylko komponent) -
OnDestroy
(raz)
Dalsza lektura
OnInit
Wywoływane po zainicjowaniu właściwości komponentu lub dyrektywy.
(Przed dyrektywami dotyczącymi dzieci)
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
Uruchamiany, gdy instancja komponentu lub dyrektywy zostanie zniszczona.
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
Uruchamiany, gdy jedna lub więcej właściwości komponentu lub dyrektywy zostało zmienionych.
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);
}
}
Przy zmianie zdarzenie zostanie zarejestrowane
name: {
currentValue: 'new name value',
previousValue: 'old name value'
},
message: {
currentValue: 'new message value',
previousValue: 'old message value'
}
AfterContentInit
Uruchom po zainicjowaniu treści komponentu lub dyrektywy.
(Zaraz po 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
Strzelaj po pełnym zainicjowaniu widoku.
(Dostępne tylko dla komponentów)
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
Uruchamia się po zainicjowaniu zarówno widoku komponentu, jak i dowolnego z jego widoków potomnych. Jest to przydatny hak cyklu życia wtyczek poza ekosystemem Angular 2. Na przykład możesz użyć tej metody do zainicjowania selektora daty jQuery na podstawie znaczników, które renderował 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
Uruchom po zakończeniu sprawdzania widoku komponentu.
(Dostępne tylko dla komponentów)
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
Pozwala nasłuchiwać zmian tylko w określonych właściwościach
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));
}
}
}