我想在角度项目中使用范围滑块,我尝试将一个可用模块用于角度4。
它在编译期间工作正常,但是当我尝试构建它以进行部署时,它会抛出以下错误。
我检查了在角度项目中直接使用jQuery插件的选项,我只是在Angular 2中获得了选项。
我们有什么方法可以在Angular 4中使用jQuery插件吗?
请告诉我。
提前致谢!
答案 0 :(得分:186)
使用npm
安装jquerynpm install jquery --save
添加打字
npm install --save-dev @types/jquery
将脚本添加到angular-cli.json
"apps": [{
...
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
],
...
}]
构建项目并提供服务
ng build
希望这有帮助!享受编码
答案 1 :(得分:154)
是的,你可以在Angular 4中使用jquery
步骤:
1)在index.html
下面的标记行中。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
2)在下面的组件ts文件中,你必须像这样声明var
import { Component } from '@angular/core';
declare var jquery:any;
declare var $ :any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'abgular 4 with jquery';
toggleTitle(){
$('.title').slideToggle(); //
}
}
并将此代码用于相应的html文件,如下所示:
<h1 class="title" style="display:none">
{{title}}
</h1>
<button (click)="toggleTitle()"> clickhere</button>
这对你有用。感谢
答案 2 :(得分:34)
使用NPM安装jQuery Jquery NPM
npm install jquery
安装jQuery声明文件
npm install -D @types/jquery
在.ts中导入jQuery
import * as $ from 'jquery';
在课堂内打电话
export class JqueryComponent implements OnInit {
constructor() {
}
ngOnInit() {
$(window).click(function () {
alert('ok');
});
}
}
答案 3 :(得分:27)
在安装@ types / jquery时,不需要声明任何jQuery变量。
declare var jquery:any; // not required
declare var $ :any; // not required
你应该可以随处访问jQuery。
以下内容应该有效:
jQuery('.title').slideToggle();
答案 4 :(得分:11)
你不应该在Angular中使用jQuery。尽管有可能(请参阅此问题的其他答案),但不鼓励这样做。为什么呢?
Angular在其内存中拥有自己的DOM表示,并且不使用像jQuery这样的查询选择器(像document.getElementById(id)
这样的函数)。相反,所有DOM操作都由Renderer2完成(和Angular-directives一样,* ngFor和* ngIf在后台/框架代码中访问Renderer2)。如果您自己使用jQuery操作DOM,您迟早会...
如果你真的想要包含jQuery(用于捕捉一些你将100%最终扔掉的原型),我建议至少将它包含在你的package.json中npm install --save jquery
而不是从谷歌的CDN。
TLDR:要学习如何以Angular方式操作DOM,请首先浏览官方的英雄教程:https://angular.io/tutorial/toh-pt2如果需要访问DOM层次结构中更高层的元素(parent或{{ 1}})或其他一些原因指令,如
document body
,*ngIf
,自定义指令,管道和其他角色实用程序,如*ngFor
,[style.background]
不能满足您的需求,使用Renderer2:https://www.concretepage.com/angular-2/angular-4-renderer2-example
答案 5 :(得分:8)
试试这个:
this
或者将脚本添加到angular-cli.json:
import * as $ from 'jquery/dist/jquery.min.js';
并在您的.ts文件中:
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
]
答案 6 :(得分:1)
你可以像这样更新你的jquery打字版本
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
我遇到了同样的错误,而且我已经在网上冲浪了5天寻找解决方案。这对我有用,它应该适合你
答案 7 :(得分:1)
如果您需要在项目中使用其他库--typescript--而不仅仅是在项目中 - 角度 - 您可以查找删除的tds(TypeScript声明文件),它们包含方法,类型,函数,等,可以由TypeScript使用,通常无需导入。 declare var是最后一个资源
npm install @types/lib-name --save-dev
答案 8 :(得分:0)
您可以使用Webpack 提供。然后将自动注入DOM。
module.exports = {
context: process.cwd(),
entry: {
something: [
path.join(root, 'src/something.ts')
],
vendor: ['jquery']
},
devtool: 'source-map',
output: {
path: path.join(root, '/dist/js'),
sourceMapFilename: "[name].js.map",
filename: '[name].js'
},
module: {
rules: [
{test: /\.ts$/, exclude: /node_modules/, loader: 'ts-loader'}
]
},
resolve: {
extensions: ['.ts', '.es6', '.js', '.json']
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
]
};
答案 9 :(得分:0)
尝试使用- 声明let $:any;
或从'jquery / dist / jquery.min.js'中将*导入为$; 提供lib的确切路径
答案 10 :(得分:0)
打字稿的解决方案
第1步:
npm install jquery
npm install --save-dev @types/jquery
第二步:在Angular.json中添加:
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
]
或在index.html中添加:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
第3步:在* .component.ts中要使用jquery的位置
import * as $ from 'jquery'; // dont need "declare let $"
然后可以使用与javaScript相同的jquery。这样,VScode支持通过Typescript自动建议
答案 11 :(得分:-3)
ngOnInit() {
const $ = window["$"];
$('.flexslider').flexslider({
animation: 'slide',
start: function (slider) {
$('body').removeClass('loading')
}
})
}