Ng-News 25/49: Signal Forms & @angular/aria
Source: Dev.to
Signal Forms at Angular Q&A
Angular Q&A 세션의 12월 호에서는 Angular 팀의 세 멤버—Mark Thompson, Jeremy Elbourn, Kirill Cherkashin—가 참여했으며, 주로 Signal Forms에 초점을 맞췄습니다.
Signal Forms는 v21에서 실험적 기능으로 출시되었습니다. Kirill은 Signal Forms에 큰 변화가 있을 것이라고 기대하지 않으며, 지금까지 받은 피드백은 대부분 엣지 케이스에 관한 것이라고 언급했습니다. 그는 또한 Signal Forms가 이미 내부 Google 애플리케이션에서 사용되고 있다고 밝혔지만, 실험적 상태이기 때문에 모든 엣지 케이스가 고려되지 않았으며, 팀이 깨뜨리는 변경을 도입할 가능성도 있다고 덧붙였습니다.
다른 질문들은 Angular Material의 DateTimePicker 고급 기능에 관한 것이었습니다. Jeremy는 다양한 로케일과 관련된 문제가 있으며, 이러한 기능들은 결국 브라우저에 도입될 Temporal API를 필요로 할 것이라고 설명했습니다.
템플릿에서 컴포넌트의 선택자 대신 클래스 이름을 사용하는 selector‑less 컴포넌트에 대한 질문도 있었으며, 답변은 다음과 같습니다: selector‑less는 현재 팀이 AI 작업에 집중하고 있기 때문에 우선순위가 낮아졌습니다.
Signal Forms at Angular Air
Angular Air에서는 Sander Elias가 Signal Forms에 대한 개요를 제공하는 팟캐스트를 진행했습니다. 그는 복잡한 “kitchen‑sink” 폼 예제를 소개했으며, 해당 예제의 소스 코드는 공개되어 있습니다.
@angular/aria at Angular Air
Angular 팀의 Wagner Maciel이 Angular Air에 출연해 Angular 21에 함께 출시된 @angular/aria에 대해 논의했습니다.
@angular/aria는 헤드리스(완전 무스타일) 접근성 프리미티브 집합입니다. combobox, menu, grid와 같은 역할을 제공하며, 해당 규칙 뒤에 숨겨진 접근성 구현을 담당합니다.
주목할 만한 특징은 @angular/aria가 Signals를 지원하는 프레임워크라면 Angular 외부에서도 사용할 수 있다는 점입니다. 현재는 Google 내부 프레임워크인 Wiz에서 사용되고 있습니다.
Angular Material이 직접 @angular/aria를 기반으로 할 가능성은 낮으며, 대신 새로운 Angular Material 컴포넌트가 내부적으로 @angular/aria를 활용해 구축될 것으로 보입니다.
PrimeNg 21
PrimeNG가 Angular 21용으로 출시되었으며, 단순히 의존성 업데이트만을 의미하지 않습니다. 변경 로그에 따르면 이제:
- Zoneless 동작을 지원합니다
- 기본 DOM 요소에 속성을 전달하는 쉬운 방법을 제공합니다(예:
aria-*또는data-*접두사) - Angular CDK가 제공하는 것과 유사한 무스타일 컴포넌트를 도입했습니다
두 번째 에디션인 PrimeNgx에 대한 초기 계획은 취소되었고, 이제는 PrimeNG 자체에 전적으로 집중하고 있습니다.
PrimeNG v21 discussion on Reddit
Security Advisories
XSRF Token Leak Scenario
HttpClient를 사용해 요청을 보낼 때, Angular는 해당 요청이 애플리케이션과 동일한 출처인지 확인합니다. 상대 URL인 경우 HttpClient는 자동으로 XSRF 토큰을 헤더에 추가해 요청이 사용자에 의해 시작되었는지 검증합니다.
보고된 이슈는 프로토콜‑상대 URL(// 로 시작) 을 내부 상대 URL로 잘못 처리하면서 토큰이 누출되는 현상이었습니다. Angular 19, 20, 21 버전에서 이 문제가 패치되었습니다.
GitHub Advisory GHSA-58c5-g7wp-6w37
XSS Vulnerability via Templates
또 다른 보안 이슈는 Angular 템플릿 시스템에서 발견되었습니다. 특정 SVG 속성이 정화 과정을 우회해 공격자가 악성 JavaScript를 삽입할 수 있는 가능성이 있었습니다. 이 취약점은 현재 지원되는 모든 주요 버전(19, 20, 21)에서 해결되었습니다.