Angular 12: Features, Deprecations & Migration

angular 12 release update

Table of Contents

In this post, We are going to discuss, the new features in the latest release Angular 12, deprecated APIs and migration form 11

You may also be interested in: “Realtime with serverless using Websocket in AWS”

Features:

Nullish Coalescing:

Nullish Coalescing first was introduced in Typescript & developers were able to write the code with more cleaner approach.

And hence, now Angular view template also supports Nullish Coalescing from Angular 12.

You can think of this feature as a way to “fall back” to a default value when dealing with null or undefined. When we write code like.

For Example:

{{ foo ?? bar() }}

This is a new way to say that the value foo will be used when it is “present”; but when it is null or undefined, calculate bar() in its place.

Again, the above code is equivalent to the following.

{{ foo !== null && foo !== undefined ? foo : bar() }}

Forms: introduce min and max validators

If I have an <input type="number" min="0" [(ngModel)]="val" #num="NgModel">, I should be able to assume that num.valid will be false when the input’s value is -10.

That’s just a really basic and logical assumption that developers will make, and to do otherwise, out of the box, without requiring an extra “workaround” directive, etc, is a disservice to them.

Fix: Previously min and max attributes defined on the <input type="number"> were ignored by Forms module. Now presence of these attributes would trigger min/max validation logic (in case formControlformControlName or ngModel directives are also present on a given input) and corresponding form control status would reflect that.

Added historyGo method to Location service:

historyGo, that will let the user navigate to a specific page from session history identified by its
relative position to the current page.

Documentation: https://angular.io/api/common/Location#historyGo

Example:

location.historyGo(2) moves forward two pages and location.historyGo(-2) moves back two pages. When we try to go beyond what’s stored in the history session, we stay in the current page. Same behaviour occurs when relativePosition equals 0

location.historyGo(2)

Support APP_INITIALIZER work with observable

In Angular v12 you will be able to directly return an Observable. Let’s see how:

import { APP_INITIALIZER, FactoryProvider } from '@angular/core';
import { ConfigService } from "./config.service";

function loadConfigFactory(configService: ConfigService) {
  // Easy as pie  
  return () => configService.getConfig(); //  

  // How you might've done it “before”
  // return () => configService.getConfig().toPromise();
}

export const loadConfigProvider: FactoryProvider = {
  provide: APP_INITIALIZER,
  useFactory: loadConfigFactory,
  deps: [ConfigService],
  multi: true
};

An important thing to note is that the Observable must complete, otherwise the bootstrap process will not continue.

Support http client request metadata for use in interceptors:

Previously, when using an http interceptor you cannot pass meta data about the request to the interceptor

Now, Http context stores arbitrary user defined values and ensures type safety without actually knowing the types. It is backed by a Map and guarantees that keys do not clash.

Documentation: https://angular.io/api/common/http/HttpContext

@Injectable()
export class UsersService {
  constructor(private http: HttpClient) {}
  
  getUsers() {
    return this.http.get('....', {
      context: return new HttpContext().set('cacheRequest', true); // We have added context here
    })
  }
}

Disabling animations through BrowserAnimationsModule.withConfig

Previously, the only way to disable animations was by providing the NoopAnimationsModule which didn’t allow for it to be disabled based on runtime information.

These changes add support for disabling animations based on runtime information by using BrowserAnimationsModule.withConfig({disableAnimations: true}).

Documentation: https://angular.io/api/platform-browser/animations/BrowserAnimationsModuleConfig

Deprecated APIs:

Support for IE11:

Angular support for Microsoft’s Internet Explorer 11 (IE11) is deprecated and will be removed in Angular v13.

Documentation: https://angular.io/guide/deprecations#internet-explorer-11

Node Version 10 or older:

You can no longer use Angular with Node.js version 10 or older.

Migration to Angular 12

First check your application’s version of Angular: From within your project directory, use the ng version command. So that you can select the version in the interactive update guide given by Angular.

Angular provides complete instructions in the interactive Angular Update Guide, So that you can select the options based on your app and it will give you the steps and guide for updating.

 class=

Unimedia Technology

Here at Unimedia Technology we have a team of Cloud Native Developers that can help you develop your most complex AWS and Azure Applications.

Remember that at Unimedia, we are experts in emerging technologies, so feel free to contact us if you need advice or services. We’ll be happy to assist you.

Unimedia Technology

Your software development partner

We are a cutting-edge technology consultancy specialising in custom software architecture and development.

Our Services

Sign up for our updates

Stay updated, stay informed, and let’s shape the future of tech together!

Related Reads

Dive Deeper with These Articles

Explore more of Unimedia’s expert insights and in-depth analyses in the realm of software development and technology.

Let’s make your vision a reality!

Simply fill out this form to begin your journey towards innovation and efficiency.