web-dev-qa-db-fra.com

Comment puis-je utiliser jQuery dans une application Angular 8?

J'ai une application qui utilise SignalR pour communiquer avec une application de bureau. Pour utiliser SignalR, je dois utiliser jQuery dans mon fichier .ts. Cependant, cela ne semble pas fonctionner après la migration de Angular 7 vers Angular 8.

J'utilise declare var $: any; comme je l'ai fait dans les versions précédentes d'Angular. Malheureusement, $ imprime désormais vide sur la console.

Donc, Angular v8 ne prend plus en charge l'utilisation de jQuery de cette façon, ou quelque chose d'autre s'est-il interrompu dans la migration?

Mettre à jour:

J'ai jQuery v3.3.1 chargé via npm.

Cela le rend global (dans angular.json)

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

Donc, après m'être éloigné un peu du problème et avoir utilisé la réponse de roberts pour confirmer que jQuery fonctionnait dans app.module.ts (je ne savais pas qu'un console.log fonctionnerait au milieu des importations), j'ai réalisé que j'avais combattu ce problème la dernière fois que j'ai mis à niveau la v4 vers la v7.

Ce qui s'était passé, c'est qu'une dépendance entraînait le rechargement de jQuery. La section de l'application qui démarre la communication signalR charge également une autre dépendance (telerik-angular-report-viewer) qui faisait que console.log ($) n'affichait rien car jQuery n'avait pas encore été chargé dans le composant.

La solution:

Supprimez le code suivant

window.jQuery = jQuery;
window.$ = jQuery;

à partir des fichiers suivants

  • dependencies\telerikReportViewer.kendo.min.js
  • dependencies\telerikReportViewer.js
  • cjs\telerik-report-viewer.component.js
  • es\telerik-report-viewer.component.js
0
Irrelevant_Coder