Angular-Lebenszyklus-Hooks sind Methoden, die es Entwicklern ermöglichen, Schlüsselmomente des Lebenszyklus einer Angular-Komponente zu nutzen, von ihrer Erstellung bis zu ihrer Zerstörung, einschließlich Initialisierung, Änderungen und Zerstörung. Die am häufigsten verwendeten Lebenszyklus-Hooks sind:
Bevor wir eintauchen, erstellen wir das erforderliche Projekt:
Wir benötigen eine übergeordnete und untergeordnete Komponente. Wir werden ein Eingabefeld in der übergeordneten Komponente haben und den eingegebenen Wert an das untergeordnete Element übergeben und in der untergeordneten Komponente anzeigen.
parent.component.ts
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-parent', templateUrl: './parent.component.html', styleUrls: ['./parent.component.css'] }) export class ParentComponent implements OnInit { constructor() { } ngOnInit(): void { } value:string = ''; SubmitValue(val: any) { this.value = val.value; } }
parent.component.html
<h1>Lifecycle Hooks</h1> <input type="text" placeholder="Input here..." #val> <button (click)="SubmitValue(val)">Submit Value</button> <br><br> <app-child [inputValue]="value"></app-child>
child.component.ts
import { Component, Input, OnInit } from '@angular/core'; @Component({ selector: 'app-child', templateUrl: './child.component.html', styleUrls: ['./child.component.css'] }) export class ChildComponent implements OnInit { constructor() { } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void { } }
child.component.html
<div> Input Value: <strong>{{inputValue}}</strong> </div>
Wir erhalten eine Ausgabe wie diese:
1.Konstrukteur
export class ChildComponent implements OnInit { constructor() { **console.log("Constructor Called");** } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void {} }
2.ngOnChanges
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-parent', templateUrl: './parent.component.html', styleUrls: ['./parent.component.css'] }) export class ParentComponent implements OnInit { constructor() { } ngOnInit(): void { } value:string = ''; SubmitValue(val: any) { this.value = val.value; } }
Erneut habe ich den Wert eingegeben und erneut ngOnChanges aufgerufen, aber der Konstruktor wurde nur einmal aufgerufen.
Mal sehen, was wir an Änderungsargumenten haben:
<h1>Lifecycle Hooks</h1> <input type="text" placeholder="Input here..." #val> <button (click)="SubmitValue(val)">Submit Value</button> <br><br> <app-child [inputValue]="value"></app-child>
Lassen Sie uns etwas Wert legen und sehen:
3.ngOnInit
import { Component, Input, OnInit } from '@angular/core'; @Component({ selector: 'app-child', templateUrl: './child.component.html', styleUrls: ['./child.component.css'] }) export class ChildComponent implements OnInit { constructor() { } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void { } }
4.ngDoCheck
<div> Input Value: <strong>{{inputValue}}</strong> </div>
5.ngAfterContentInit
child.component.html
export class ChildComponent implements OnInit { constructor() { **console.log("Constructor Called");** } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void {} }
parent.component.html
export class ChildComponent implements OnInit, OnChanges { constructor() { console.log("Constructor Called"); } ngOnChanges(changes: SimpleChanges): void { console.log("ngOnChanges Called"); } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void {} }
child.component.ts
ngOnChanges(changes: SimpleChanges): void { console.log("ngOnChanges Called", changes); }
6.ngAfterContentChecked
export class ChildComponent implements OnInit, OnChanges { constructor() { console.log("Constructor Called"); } ngOnChanges(changes: SimpleChanges): void { console.log("ngOnChanges Called"); } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void { console.log("ngOnInit Called"); } }
Lass uns das umgehen:
export class ChildComponent implements OnInit, OnChanges, DoCheck { constructor() { console.log("Constructor Called"); } ngOnChanges(changes: SimpleChanges): void { console.log("ngOnChanges Called", changes); } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void { console.log("ngOnInit Called"); } ngDoCheck() { console.log("ngDoCheck Called"); } }
Wenn sich der NG-Inhalt erneut ändert, wird ngAfterContentChecked aufgerufen.
7.ngAfterViewInit
8.ngAfterViewChecked
9.ngOnDestroy
ngOnDestroy wird nur aufgerufen, wenn wir eine Komponente zerstören. Versuchen wir also, die untergeordnete Komponente zu entfernen, wenn wir auf die Schaltfläche „Komponente zerstören“ klicken.
Lassen Sie uns Vorkehrungen treffen:
parent.component.ts
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-parent', templateUrl: './parent.component.html', styleUrls: ['./parent.component.css'] }) export class ParentComponent implements OnInit { constructor() { } ngOnInit(): void { } value:string = ''; SubmitValue(val: any) { this.value = val.value; } }
parent.component.html
<h1>Lifecycle Hooks</h1> <input type="text" placeholder="Input here..." #val> <button (click)="SubmitValue(val)">Submit Value</button> <br><br> <app-child [inputValue]="value"></app-child>
Bevor wir auf die Schaltfläche Komponente zerstören klicken:
Nachdem wir auf die Schaltfläche „Komponente zerstören“ geklickt haben:
Lebenszyklus-Hook-Sequenz:
Indem Sie diese Hooks verstehen und effektiv nutzen, können Sie das Verhalten der Komponente in verschiedenen Phasen ihres Lebenszyklus verwalten.
Das obige ist der detaillierte Inhalt vonKomponentenlebenszyklus in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!