Web

How to Upgrade from Angular 5 App to Angular 6

In this post, you will learn about How to update or migrate your Angular 5 app (using Angular 5.1 or Angular 5.2 version) to use Angular 6.0.0. The following are some of the points covered:

  • Pre-requisites
  • Upgrade/Update steps for migrating Angular 5 to Angular 6.0.0 app.

Pre-requisites

The following needs to be done before you start on the migration:

  • Make sure your NodeJS version is Node 8 or later.
  • Make sure your code used HttpClientModule and the HttpClient service instead of HttpModule and Http service.
  • Make sure to import animation services from @angular/animations rather than @angular/core.

Upgrade/update Angular 5.* to Angular 6.0.0

The following commands need to be executed as part of migrating Angular 5.1 or Angular 5.2 app to Angular 6.*.

  • Update Angular CLI globally and locally: The following command will update Angular CLI globally (-g option) and locally.
    sudo npm install -g @angular/cli
    sudo npm install @angular/cli
    
  • Update package.json: Execute the following command to update the package.json file with Angular 6.* changes.
    sudo ng update @angular/cli
    

    This is how my package.json file looked before executing above command. Note some of the following changes:

    • All of the dependencies and devDependencies is updated from version 5.2.* to version 6.0.0
    • rxjs is migrated from version 5.5.6 to version 6.1.0
    • typescript is migrated from version 2.5.3 to version 2.7.2
    {
    "name": "rbot-ui",
    "version": "0.0.0",
    "license": "MIT",
    "scripts": {
      "ng": "ng",
      "start": "ng serve",
      "build": "ng build --prod",
      "test": "ng test",
      "lint": "ng lint",
      "e2e": "ng e2e"
    },
    "private": true,
    "dependencies": {
      "@angular/animations": "^5.2.10",
      "@angular/common": "^5.2.0",
      "@angular/compiler": "^5.2.0",
      "@angular/core": "^5.2.0",
      "@angular/forms": "^5.2.0",
      "@angular/http": "^5.2.0",
      "@angular/platform-browser": "^5.2.0",
      "@angular/platform-browser-dynamic": "^5.2.0",
      "@angular/router": "^5.2.0",
      "@angular/service-worker": "^5.2.0",
      "core-js": "^2.4.1",
      "rxjs": "^5.5.6",
      "zone.js": "^0.8.19"
    },
    "devDependencies": {
      "@angular/cli": "~1.7.3",
      "@angular/compiler-cli": "^5.2.0",
      "@angular/language-service": "^5.2.0",
      "@types/jasmine": "~2.8.3",
      "@types/jasminewd2": "~2.0.2",
      "@types/node": "~6.0.60",
      "codelyzer": "^4.0.1",
      "jasmine-core": "~2.8.0",
      "jasmine-spec-reporter": "~4.2.1",
      "karma": "~2.0.0",
      "karma-chrome-launcher": "~2.2.0",
      "karma-coverage-istanbul-reporter": "^1.2.1",
      "karma-jasmine": "~1.1.0",
      "karma-jasmine-html-reporter": "^0.2.2",
      "protractor": "~5.1.2",
      "ts-node": "~4.1.0",
      "tslint": "~5.9.1",
      "typescript": "~2.5.3"
    }
    }
    

    This is how the new package.json file looked like after executing ng update command.

    {
    "name": "rbot-ui",
    "version": "0.0.0",
    "license": "MIT",
    "scripts": {
      "ng": "ng",
      "start": "ng serve",
      "build": "ng build --prod",
      "test": "ng test",
      "lint": "ng lint",
      "e2e": "ng e2e"
    },
    "private": true,
    "dependencies": {
      "@angular/animations": "6.0.0",
      "@angular/common": "6.0.0",
      "@angular/compiler": "6.0.0",
      "@angular/core": "6.0.0",
      "@angular/forms": "6.0.0",
      "@angular/http": "6.0.0",
      "@angular/platform-browser": "6.0.0",
      "@angular/platform-browser-dynamic": "6.0.0",
      "@angular/router": "6.0.0",
      "@angular/service-worker": "6.0.0",
      "core-js": "^2.4.1",
      "rxjs": "^6.1.0",
      "zone.js": "~0.8.26"
    },
    "devDependencies": {
      "@angular/cli": "6.0.0",
      "@angular/compiler-cli": "6.0.0",
      "@angular/language-service": "6.0.0",
      "@types/highcharts": "^5.0.22",
      "@types/jasmine": "~2.8.3",
      "@types/jasminewd2": "~2.0.2",
      "@types/node": "~6.0.60",
      "codelyzer": "^4.0.1",
      "jasmine-core": "~2.8.0",
      "jasmine-spec-reporter": "~4.2.1",
      "karma": "~2.0.0",
      "karma-chrome-launcher": "~2.2.0",
      "karma-coverage-istanbul-reporter": "^1.2.1",
      "karma-jasmine": "~1.1.0",
      "karma-jasmine-html-reporter": "^0.2.2",
      "protractor": "~5.1.2",
      "ts-node": "~4.1.0",
      "tslint": "~5.9.1",
      "typescript": "2.7.2"
    }
    }
    
  • Update @Angular/Core: Execute the following command to update Angular core.
    sudo ng update @angular/core
    
  • Update @Angular/Material: In case you used Angular Material in your project, execute following command to update @angular/material.
    sudo ng update @angular/material
    
  • Update other dependencies: Execute command such as ng update to identify and update other dependencies. If all is good, you should see the following message: We analyzed your package.json and everything seems to be in order. Good work!
  • Update @Angular/CLI from 1.7.3 to Latest: Angular 6.0.0 requires angular.json file. In case, you used Angular-cli versions of 1.7.*, you would have to upgrade it. Or else, you would get the error such as Local workspace file (‘angular.json’) could not be found.
    sudo ng update @angular/cli --migrate-only --from=1.7.3
    
  • In case, Typescript is configured with script = true, you would want to put following within compiler options in tsconfig.json
    "compilerOptions": {
      ...
      "strictPropertyInitialization": false
    }
    

With above, you should be all set. Execute the command, ng serve and make sure the app compiles.

You may see the error related to has no exported member ‘Observable’. You could get rid of such errors using the following commands:

  • Remove deprecated RxJS 6 features by executing the following commands:
    npm install -g rxjs-tslint
    rxjs-5-to-6-migrate -p src/tsconfig.app.json
    
  • Remove rxjs-compat by executing the following command:
    npm uninstall rxjs-compat
    

You may still see errors such as has no exported member ‘Observable’ in one or more of the packages. You would be required to upgrade those packages to the higher version using Angular 6.0.0. Thus, I would recommend you still wait for a while before going for the upgrade.

References

Summary

In this post, you learned about how to migrate Angular 5.1 or Angular 5.2 app to use Angular 6.0.0.

Did you find this article useful? Do you have any questions or suggestions about this article? Leave a comment and ask your questions and I shall do my best to address your queries.

Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking.

Share
Published by
Ajitesh Kumar
Tags: Angularweb

Recent Posts

Agentic Reasoning Design Patterns in AI: Examples

In recent years, artificial intelligence (AI) has evolved to include more sophisticated and capable agents,…

1 month ago

LLMs for Adaptive Learning & Personalized Education

Adaptive learning helps in tailoring learning experiences to fit the unique needs of each student.…

1 month ago

Sparse Mixture of Experts (MoE) Models: Examples

With the increasing demand for more powerful machine learning (ML) systems that can handle diverse…

2 months ago

Anxiety Disorder Detection & Machine Learning Techniques

Anxiety is a common mental health condition that affects millions of people around the world.…

2 months ago

Confounder Features & Machine Learning Models: Examples

In machine learning, confounder features or variables can significantly affect the accuracy and validity of…

2 months ago

Credit Card Fraud Detection & Machine Learning

Last updated: 26 Sept, 2024 Credit card fraud detection is a major concern for credit…

2 months ago