피드로 돌아가기
Angular Just Added Arrow Functions to Templates — And I’m Not Sure It’s a Good Idea
Dev.toDev.to
Frontend

Angular Just Added Arrow Functions to Templates — And I’m Not Sure It’s a Good Idea

Angular 21.2가 템플릿에서 화살표 함수 인라인 작성을 지원하면서 컴포넌트 클래스 메서드 정의를 제거할 수 있게 됨

Greg Belousov2026년 3월 24일7intermediate

Context

기존 Angular에서는 템플릿의 이벤트 핸들링이나 데이터 변환을 위해 컴포넌트 클래스에 별도의 메서드를 정의해야 했습니다. Signal 값 업데이트, 데이터 필터링, 조건부 검색 등 간단한 로직도 클래스 메서드로 구현해야 하므로 보일러플레이트 코드가 증가했습니다.

Technical Solution

  • Signal 값 직접 업데이트: 템플릿의 클릭 이벤트에서 selectedHeroId.update(count => count === 1 ? heroes().length : count - 1) 형태로 화살표 함수 인라인 작성 지원
  • 필터링과 맵핑 인라인 처리: heroes().filter(hero => hero.name.charAt(0).toLowerCase() === hero.lastName.charAt(0).toLowerCase()).map(hero => ...) 형태로 데이터 변환을 템플릿에서 직접 수행
  • 검색 로직 인라인화: heroes().find(hero => hero.email.endsWith('stark.com'))?.name 처럼 데이터 검색을 템플릿 표현식에서 직접 작성
  • 함수를 Input으로 전달: sortFn: InputSignal<(a: Hero, b: Hero) => number> 형태로 부모 컴포넌트에서 정렬 함수를 자식 컴포넌트의 Input으로 전달 가능
  • 파이프와의 조합: 화살표 함수 실행 결과에 파이프 적용 가능 (예: heroes().find(...)?. name | uppercase)

Key Takeaway

화살표 함수 템플릿 지원은 간단한 데이터 변환에서 보일러플레이트를 줄이지만, 템플릿에 로직이 혼재되는 문제와 다중행 함수 미지원, 함수 반환 불가 등의 제약이 존재하므로 소규모 로컬 변환에만 제한적으로 사용해야 합니다.


Angular 프로젝트에서 단순 Signal 업데이트나 배열 필터링이 필요한 경우, 클래스 메서드 대신 템플릿의 인라인 화살표 함수를 사용하면 컴포넌트 코드량을 줄일 수 있습니다. 다만 10줄 이상의 복잡한 로직이나 다중행 처리가 필요하면 여전히 컴포넌트 메서드로 분리해야 합니다.

원문 읽기
Angular Just Added Arrow Functions to Templates — And I’m Not Sure It’s a Good Idea | Devpick