Angular 18

zoneless

  • zone.js hängt sich an alles, was rerendering auslösen könnte
  • ab Angular 18 wird zone.js (experimentell) optional
  • kann migriert werden, wenn überall ChangeDetectionStrategy.OnPush verwendet wird
  • Vorteile: schneller, kleinere bundle size

ng-content Fallback

Man kann default Werte für ng-content angeben:

<!-- greeting Component -->
Hello <ng-content>Unknown User</ng-content>
<greeting></greeting>
<!-- "Hello Unknown User" -->

<greeting>Jon Doe</greeting>
<!-- "Hello Jon Doe" -->

Route redirect functions

const routes: Routes = [
    { 
        path: 'home', redirectTo: ({ queryParams }) => {
            if (queryParams.redirectedFrom === 'website')
                return '/news';
            return inject(NavService).getFirstVisiblePath();
        } 
    },
    // ...
];

Angular Playground

angular.dev/playground

Angular 19

Standalone

Standalone Components sind der Default.

@Component({
    selector: 'person',
    templateUrl: 'person.component.html',
    standalone: false, // muss jetzt explizit deaktiviert werden
})
export class PersonComponent {
}

ng-deep

  • nicht mehr deprecated
:host ::ng-deep .highlight {
    background-color: gold;
}