Rumah >hujung hadapan web >tutorial js >Kitaran Hayat Komponen dalam Sudut
Kait kitar hayat bersudut ialah kaedah yang membolehkan pembangun memanfaatkan detik-detik penting kitaran hayat komponen Sudut, daripada penciptaannya hingga kemusnahannya yang merangkumi permulaan, perubahan dan pemusnahan. Cangkuk kitar hayat yang paling biasa digunakan ialah:
Sebelum menyelam, mari buat projek prasyarat:
Kami memerlukan komponen ibu bapa dan anak. Kami akan mempunyai medan Input dalam komponen induk dan akan memberikan nilai yang dimasukkan itu kepada anak dan akan ditunjukkan dalam komponen anak.
induk.komponen.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>
kanak-kanak.komponen.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>
Kami akan mempunyai output seperti ini:
1.Pembina
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; } }
Sekali lagi saya telah memasukkan nilai dan sekali lagi ngOnChanges dipanggil tetapi pembina hanya memanggil sekali.
Mari kita lihat apa yang ada dalam hujah perubahan:
<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>
Mari kita nilai dan lihat:
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 {} }
kanak-kanak.komponen.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"); } }
jom main-main ni:
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"); } }
Apabila terdapat perubahan dalam ng-kandungan sekali lagi ngAfterContentChecked dipanggil.
7.ngAfterViewInit
8.ngAfterViewChecked
9.ngOnDestroy
ngOnDestroy hanya akan dipanggil apabila kita memusnahkan mana-mana komponen, jadi mari cuba alih keluar komponen anak apabila kita mengklik butang Musnah komponen.
Jom uruskan:
induk.komponen.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>
Sebelum kami mengklik butang Musnah komponen:
Selepas kami mengklik butang Hancurkan komponen:
Jujukan Cangkuk Kitar Hidup:
Dengan memahami dan menggunakan cangkuk ini dengan berkesan, anda boleh mengurus gelagat komponen pada peringkat berbeza kitaran hayatnya.
Atas ialah kandungan terperinci Kitaran Hayat Komponen dalam Sudut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!