Angular 16 is the latest version of the popular frontend framework Angular, released on May 3, 2023. It brings significant improvements and updates in reactivity, server-side rendering, tooling, and more.
Some of the new features in Angular 16 are:
● Rethinking
Reactivity: Angular 16 introduces a new reactivity model that aims to
improve the runtime performance and developer experience of Angular
applications. It allows you to define signals, computed values, and effects
that clearly specify the dependencies and data flow of your view.
● Angular
Signals: Angular Signals are a new way of managing data in Angular
applications. They are observable values that can be updated and subscribed to.
They are interoperable with RxJS and can be used to trigger change detection.
● RxJS
interoperability: Angular 16 supports using RxJS observables as signals,
computed values, and effects. This means we can use RxJS operators and
utilities to manipulate data in your Angular application.
● Server-side
rendering hydration enhanced: Angular 16 improves the server-side rendering
(SSR) support by allowing us to reuse the existing DOM nodes that were
pre-rendered on the server. This can improve the page load performance and
reduce flickering.
● Improved
tooling experience for standalone components, pipes, and directives:
Angular 16 provides migration schematics and a standalone migration guide to
help you transition our code to standalone APIs. This can reduce the
boilerplate code and make your components, pipes, and directives more reusable.
● Advancing
developer tooling: Angular 16 introduces new builders based on esbuild, a
fast JavaScript bundler. This can significantly improve the build times of your
Angular application. It also integrates with Vite, a fast development server
that uses native ES modules .
● Required
inputs: Angular 16 allows us to mark component and directive inputs as
required. This means that if you use a component or directive without
specifying all of its required inputs, Angular will report an error at build
time. This can help us catch bugs and enforce best practices.
Here are some examples of how to use these new
features in Angular 16:
● To
create a signal, use the `signal` function:
import { signal } from '@angular/core';
const counter = signal(0); // create a signal with initial
value 0
counter.value++; // update the signal value
counter.subscribe(value => console.log(value)); //
subscribe to the signal value
● To
create a computed value, use the `computed` function:
import { computed } from '@angular/core';
const counter = signal(0); // create a signal
const doubled = computed(() => counter.value * 2); //
create a computed value based on the signal
doubled.subscribe(value => console.log(value)); //
subscribe to the computed value
● To
create an effect, use the `effect` function:
import { effect } from '@angular/core';
const counter = signal(0); // create a signal
effect(() => console.log(counter.value)); // create an
effect that runs whenever the signal changes
● To
use RxJS observables as signals, computed values, or effects, use the `fromRx`
function:
import { fromRx } from '@angular/core';
import { interval } from 'rxjs';
const timer = fromRx(interval(1000)); // create a signal
from an RxJS observable
timer.subscribe(value => console.log(value)); //
subscribe to the signal value
● To
enable enhanced hydration for SSR, use the `enableHydration` function in your
main.ts file: