AfterView 및 AfterContent 후크
뷰와 콘텐츠가 초기화된 후 논리를 실행합니다.
AfterView 및 AfterContent 후크은(는) CoddyKit의 무료 Angular Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Angular Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Angular Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
뷰와 콘텐츠 비교
Angular는 컴포넌트의 뷰(자체 템플릿)와 ng-content를 통해 컴포넌트에 투영된 콘텐츠를 구분합니다. 각각에 대해 별도의 훅이 실행됩니다.
AfterViewInit
AfterViewInit 훅은 컴포넌트 뷰와 그 자식 뷰가 완전히 초기화된 후 한 번 실행됩니다. 뷰 자식 요소에 접근하기에 적절한 시점입니다.
import { AfterViewInit } from "@angular/core";
export class DemoComponent implements AfterViewInit {
ngAfterViewInit(): void {
console.log("view ready");
}
}ViewChild에 접근하기
템플릿 요소에 대한 @ViewChild 참조는 더 이른 시점이 아니라 ngAfterViewInit에서 안정적으로 사용할 수 있습니다.
@ViewChild("input") input!: ElementRef;
ngAfterViewInit() {
this.input.nativeElement.focus();
}AfterViewChecked
AfterViewChecked 훅은 컴포넌트 뷰를 확인할 때마다 실행됩니다. 자주 실행되므로 내부 작업은 최소화하세요.
ngAfterViewChecked() {
// runs after each view check
}AfterContentInit
AfterContentInit 훅은 ng-content로 투영된 콘텐츠가 초기화된 후 한 번 실행됩니다.
import { AfterContentInit } from "@angular/core";
export class CardComponent implements AfterContentInit {
ngAfterContentInit() {
console.log("projected content ready");
}
}ContentChild에 접근하기
@ContentChild를 사용해 투영된 콘텐츠를 조회하세요. 참조는 ngAfterContentInit에서 사용할 수 있습니다.
@ContentChild(HeaderComponent) header!: HeaderComponent;
ngAfterContentInit() {
console.log(this.header);
}AfterContentChecked
AfterContentChecked 훅은 투영된 콘텐츠를 확인할 때마다 실행됩니다. 뷰 확인 훅과 마찬가지로 자주 실행됩니다.
전체 훅 순서
입력과 콘텐츠가 있는 컴포넌트의 순서는 다음과 같습니다. ngOnChanges, ngOnInit, ngDoCheck, ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked.
// init sequence:
// OnChanges -> OnInit -> DoCheck
// -> AfterContentInit -> AfterContentChecked
// -> AfterViewInit -> AfterViewCheckedExpressionChangedAfterChecked 오류
ngAfterViewInit 내부에서 바인딩된 데이터를 변경하면 잘 알려진 ExpressionChangedAfterItHasBeenCheckedError가 발생할 수 있습니다. 이를 피하려면 이러한 업데이트를 나중으로 미루세요.
ngAfterViewInit() {
// defer to next tick to avoid the error
setTimeout(() => this.ready = true);
}ViewChildren 사용하기
@ViewChildren은 여러 개의 일치하는 요소나 컴포넌트를 담은 QueryList를 반환하며, ngAfterViewInit에서 사용할 수 있습니다.
@ViewChildren(ItemComponent) items!: QueryList<ItemComponent>;
ngAfterViewInit() {
console.log(this.items.length);
}알맞은 훅 선택하기
자체 템플릿에는 AfterView 훅을 사용하고, 투영된 콘텐츠에는 AfterContent 훅을 사용하세요. 한 번만 설정하면 되는 경우에는 Init 변형을 우선 사용하고, Checked 변형은 꼭 필요할 때만 사용하세요.
빠른 확인
after-view 및 after-content 훅에 대한 이해도를 확인해 보세요.
복습
AfterContent 훅은 투영된 콘텐츠에 대해 실행되고, AfterView 훅은 컴포넌트 자체 뷰에 대해 실행됩니다. Init 변형은 한 번 실행되고 Checked 변형은 모든 주기마다 실행됩니다. @ViewChild와 @ContentChild에 안전하게 접근할 때 사용하세요.
자주 묻는 질문
“AfterView 및 AfterContent 후크” 강의는 무료인가요?
네 — “AfterView 및 AfterContent 후크” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Angular Academy 강의 전체를 잠금 해제할 수 있습니다. Angular Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“AfterView 및 AfterContent 후크”에서 뭘 배우나요?
뷰와 콘텐츠가 초기화된 후 논리를 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 Angular Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Angular Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Angular Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“AfterView 및 AfterContent 후크” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Angular Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Angular Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- ngOnInit 및 초기화
- ngOnChanges 및 입력 변경
- ngOnDestroy 및 정리
- AfterView 및 AfterContent 후크