If you're still using *ngIf, *ngFor, and *ngSwitch, Angular 19 just gave you a reason to upgrade your template game. Angular now supports JavaScript-style control flow syntax directly in your templates: @if (user) { Hello, {{ user.name }}! } @else { Please log in. } @for (item of items; track item.id) { {{ item.name }} } @empty { No items found. } @switch (status) { @case ('success') { Success! } @case ('error') { Error! } @default { Unknown } } ✅ More readable ✅ Less boilerplate ✅ Built-in @empty and real @else blocks ✅ IDE-friendly and intuitive Want to see side-by-side comparisons with the old syntax?

If you're still using *ngIf, *ngFor, and *ngSwitch, Angular 19 just gave you a reason to upgrade your template game.
Angular now supports JavaScript-style control flow syntax directly in your templates:
@if (user) {
Hello, {{ user.name }}!
} @else {
Please log in.
}
@for (item of items; track item.id) {
{{ item.name }}
} @empty {
No items found.
}
@switch (status) {
@case ('success') { Success! }
@case ('error') {
Error! }
@default {
Unknown }
}
✅ More readable
✅ Less boilerplate
✅ Built-in @empty
and real @else
blocks
✅ IDE-friendly and intuitive
Want to see side-by-side comparisons with the old syntax?