我可以从开发人员控制台访问jquery,但不能从角度2中的组件内部访问

时间:2017-12-08 10:57:56

标签: jquery angular angular-cli

我有一个脚本包已经包含jquery amont其他东西。我只是想用它。当尝试从组件中使用它时,它无法说ERROR ReferenceError: $ is not defined。但是当我转到控制台类型$('body')时,它可以正常工作。我做错了什么?

修改

我忘了提到页面的顶部包含这个: declare var $ : any;

这是一个angular-cli项目,该包已经包含在.angular-cli.json

2 个答案:

答案 0 :(得分:1)

安装jquery的打字:

npm install --save-dev @types/jquery

在顶部的组件中包含:

declare const $: JQueryStatic;

并确保您的src / tsconfig.app.json文件具有以下键:

"typeRoots": [
   "../node_modules/@types"
 ],
 "types": [
   "jquery"
 ]

答案 1 :(得分:0)

Angular-cli使用webpack构建项目。

现在webpack树会动摇所有未导入的内容并将整个内容捆绑到一个独立的范围内,因此如果你没有任何对jquery的引用,那么你的单元将无法使用它

所以只需在您的ts文件中执行:

import * as $ from 'jquery'

也许您还需要通过npm添加jquery包:

npm install -S jquery

那-S代表--save

plnkr演示:https://plnkr.co/edit/y272nspAjnHy2wsTqzdh?p=preview

一些值得思考的东西:

我强烈建议不要在你的Angular 2+项目中使用JQuery,像querySelectoraddEventListener这样的本地人使用angular的绑定会使jQuery过时。