一尘不染

如何在Angular 8应用中使用jQuery?

node.js

我有一个利用SignalR与桌面应用程序通信的应用程序。要使用SignalR,我需要在.ts文件中使用jQuery。但是,从Angular
7迁移到Angular 8后,它似乎不起作用。

declare var $: any;像以前的Angular版本一样使用。不幸的是,$现在向控制台输出空白。

那么,Angular v8不再支持这种方式使用jQuery,还是在迁移过程中出现其他问题?

更新:

我有通过npm加载的jQuery v3.3.1。

这使其成为全局(在angular.json中)

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

阅读 328

收藏
2020-07-07

共1个答案

一尘不染

因此,在稍微脱离问题并使用roberts回答确认jQuery在app.module.ts中正常工作后(我不知道console.log在导入过程中可以正常工作),我意识到我已经我上次将​​v4升级到v7时曾遇到此问题。

发生的事情是一个依赖关系导致jQuery重新加载。应用程序的启动signalR通信的部分还加载了另一个依赖项(telerik-angular-report-
viewer),这导致console.log($)不显示任何内容,因为尚未将jQuery加载到组件中。

解决方法:

删除以下代码

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

从以下文件

  • 依赖项\ telerikReportViewer.kendo.min.js
  • 依赖项\ telerikReportViewer.js
  • cjs \ telerik-report-viewer.component.js
  • es \ telerik-report-viewer.component.js
2020-07-07