DEV Community

Cover image for Angular 8.x / 9.x & Internet Explorer Not Working. Quick Solution!
Aman
Aman

Posted on

Angular 8.x / 9.x & Internet Explorer Not Working. Quick Solution!

When it comes to web application Internet Explorer is always the bad boy (especially IE 11).

Angular 8 and above are not working on IE at all. Its really hard to test your application on IE, how the layout looks like and etc.

After you installed Angular 8 or Angular 9 when you run

ng serve

you will see a white page in Internet Explorer.

I will show you here how to fix that problem.

To get Internet Explorer working we need to do the following steps:

  • Un-comment some imports in the polyfill.ts file.
  • Install a couple of npm packages.
  • Modify the browserslist file.

Polyfill Imports

First, open the polyfills file in your IDE or text editor:
the file is found inside your project folder \src\polyfills.ts

There are two commented lines you need to un-comment:

// import 'classlist.js';  // Run `npm install --save classlist.js`.

// import 'web-animations-js';  // Run `npm install --save web-animations-js`.

Install npm Packages

There are some

npm install

commands in the comments. You need to run:

npm install --save classlist.js
npm install --save web-animations-js

Modify browserslist File

Open the browserslist file in your IDE or text editor:
the file is found inside your project folder \browserslist

The default file looks something like the below:

# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries

# You can see what browsers were selected by your queries by running:
#   npx browserslist

> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.

You need to change that last line by removing the not. After you make the changes the last line should read:

IE 9-11 # For IE 9-11 support, remove 'not'.

Run on production

ng build --prod

After building you can run:

cd .\dist\project-folder\
npx local-web-server

Run on dev

ng serve

you will still get the blank Internet Explorer. This is because ng serve doesn’t automatically generate the ES5 bundle.

Do the below quick config:

Modify tsconfig.json

You can find your tsconfig.json file in the root of your Angular Workspace. Open it up in your IDE or text editor and you will see:

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "module": "esnext",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true
  }
}

Notice that line:

target: es2015

. You can change it to es5. It will then look like this:

"target": "es5",

Now you can run:

ng serve

Hooray! at this point IE should work.

Oldest comments (3)

Collapse
 
katik1408 profile image
Kartik Saxena

Still not working for me I tried everything.

Collapse
 
laxmanvijay profile image
laxman

Wow, thanks! This saved me.

Collapse
 
adithyasbhat profile image
adithyasbhat

how the angular material can be worked with old chrome and firefox browser