How can I use jQuery in an Angular 8 app?

Irrelevant_Coder picture Irrelevant_Coder · Jul 8, 2019 · Viewed 23.3k times · Source

I have an application that utilizes SignalR to communicate with a desktop application. To utilize SignalR I need to use jQuery in my .ts file. However, it doesn't seem to work post migrating from Angular 7 to Angular 8.

I use declare var $: any; as I have in previous versions of Angular. Unfortunately, $ now prints blank to the console.

So, does Angular v8 no longer support using jQuery this way, or did something else break in the migration?

Update:

I have jQuery v3.3.1 loaded via npm.

This makes it global (in angular.json)

"scripts": [
         "./node_modules/jquery/dist/jquery.min.js",
         "./node_modules/signalr/jquery.signalR.js"
]

Answer

Tony Ngo picture Tony Ngo · Jul 9, 2019

More elegant way without using

declare var $: any;

First run

npm install jquery --save
npm install @types/jquery --save

Then in scripts section in architect => build of angular.json file add path for jquery lib

"scripts": [
  "node_modules/jquery/dist/jquery.min.js"
]

Then in your tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": ["jquery"] // add here
  },
  "exclude": ["test.ts", "**/*.spec.ts"]
}

So now you can use jquery anywhere in your project without using declare var $ : any for every file you need to use jquery