Angular 수명 주기 후크는 개발자가 생성부터 초기화, 변경, 소멸을 포함하는 소멸까지 Angular 구성 요소 수명 주기의 주요 순간을 활용할 수 있도록 하는 방법입니다. 가장 일반적으로 사용되는 수명 주기 후크는 다음과 같습니다.
들어가기 전에 필수 프로젝트를 만들어 보겠습니다.
부모와 자식 구성 요소가 필요합니다. 상위 구성 요소에 입력 필드가 있으며 해당 입력 값을 하위 구성 요소에 전달하고 하위 구성 요소에 표시합니다.
parent.comComponent.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.comComponent.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.comComponent.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.comComponent.html
<div> Input Value: <strong>{{inputValue}}</strong> </div>
다음과 같이 출력됩니다.
1.생성자
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; } }
다시 값을 입력하고 다시 ngOnChanges를 호출했지만 생성자는 한 번만 호출되었습니다.
changes 인수에 무엇이 있는지 살펴보겠습니다.
<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>
몇 가지 값을 넣어 살펴보겠습니다.
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.comComponent.html
export class ChildComponent implements OnInit { constructor() { **console.log("Constructor Called");** } @Input() inputValue: string = "LifeCycle Hooks"; ngOnInit(): void {} }
parent.comComponent.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.comComponent.ts
ngOnChanges(changes: SimpleChanges): void { console.log("ngOnChanges Called", changes); }
6.ng콘텐츠 확인 후
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"); } }
이 문제를 해결해 보겠습니다.
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"); } }
ng-content에 다시 변경이 있으면 ngAfterContentChecked가 호출됩니다.
7.ngAfterViewInit
8.ngViewChecked
9.ngOnDestroy
ngOnDestroy는 구성 요소를 삭제할 때만 호출되므로 구성 요소 삭제 버튼을 클릭하면 하위 구성 요소를 제거해 보겠습니다.
준비합시다:
parent.comComponent.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.comComponent.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>
구성요소 삭제 버튼을 클릭하기 전에:
구성요소 삭제 버튼을 클릭한 후:
수명주기 후크 순서:
이러한 후크를 효과적으로 이해하고 사용하면 수명 주기의 다양한 단계에서 구성 요소의 동작을 관리할 수 있습니다.
위 내용은 Angular의 구성요소 수명주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!