Как использовать плагин jQuery с Angular 4?
Я хочу использовать ползунок диапазона в угловом проекте, и я попытался использовать один доступный модуль для углового 4.
Он отлично работает во время компиляции, но когда я пытаюсь построить его для развертывания, он бросает ниже ошибки.
Я проверил возможность использования плагина jQuery непосредственно в угловом проекте, и я получаю только варианты для этого в Angular 2.
есть ли способ использовать плагины jQuery в Angular 4?
пожалуйста, дайте мне знать.
спасибо заранее!
11 ответов:
Да вы можете использовать jquery с угловой 4
действия:
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>
это будет работать для вас. Спасибо
установите jquery с npm
npm install jquery --save
добавить typings
npm install --save-dev @types/jquery
добавление скриптов в angular-cli.json
"apps": [{ ... "scripts": [ "../node_modules/jquery/dist/jquery.min.js", ], ... }]
строительство и служить
ng build
надеюсь, что это помогает! Наслаждайтесь кодированием
вы не обязаны объявлять какую-либо переменную jQuery при установке @types/jquery.
declare var jquery:any; // not required declare var $ :any; // not required
вы должны иметь доступ к jQuery везде.
следующее должно работать:
jQuery('.title').slideToggle();
установить jQuery с помощью NPM jQuery NPM
npm install jquery
установите файл объявления jQuery
npm install -D @types/jquery
импорт jQuery внутри .ТС
import * as $ from 'jquery';
вызов внутри класса
export class JqueryComponent implements OnInit { constructor() { } ngOnInit() { $(window).click(function () { alert('ok'); }); } }
попробуйте это:
import * as $ from 'jquery/dist/jquery.min.js';
или добавить скрипты в angular-cli.json:
"scripts": [ "../node_modules/jquery/dist/jquery.min.js", ]
и в вашем .файл ТС:
declare var $: any;
вы не должны использовать jQuery в Angular. Хотя это возможно (см. другие ответы на этот вопрос), это обескураживает. Зачем?
Angular имеет собственное представление DOM в своей памяти и не использует селекторы запросов (такие функции, как
document.getElementById(id)
), такие как jQuery. Вместо этого все DOM-манипуляции выполняются с помощью Renderer2 (и угловых директив, таких как *ngFor и *ngIf, обращающихся к этому Renderer2 в фоновом режиме/framework-code). Если вы сами манипулируете DOM с помощью jQuery, вы будете рано или поздно...
- запуск в проблемы синхронизации и есть вещи неправильно появляются или не исчезают в нужное время с экрана
- есть проблемы с производительностью в более сложных компонентах, так как внутреннее DOM-представление Angular связано с зоной.js и его механизм обнаружения изменений-поэтому обновление DOM вручную всегда будет блокировать поток, на котором работает ваше приложение.
- есть другие запутанные ошибки, которые вы не знаете происхождения из.
- не будучи в состоянии проверить приложение правильно (Жасмин требует, чтобы вы знали, когда элементы были оказаны)
- не имея возможности использовать угловые универсальные или веб-рабочие
если вы действительно хотите включить jQuery (для duck-taping какой-то прототип, который вы на 100% окончательно выбросите), я рекомендую, по крайней мере, включить его в свой пакет.json с
npm install --save jquery
вместо того, чтобы получить его из CDN google.TLDR: для изучение того, как манипулировать DOM угловым способом, пожалуйста, сначала пройдите официальный учебник tour-of heroes:https://angular.io/tutorial/toh-pt2 Если вам нужно получить доступ к элементам выше в иерархии DOM (parent или
document body
) или по какой-то другой причине директивы типа*ngIf
,*ngFor
, пользовательские директивы, трубы и другие угловые утилиты, такие как[style.background]
,[class.myOwnCustomClass]
не удовлетворяйте ваши потребности, используйте Рендерер2: https://www.concretepage.com/angular-2/angular-4-renderer2-example
вы можете обновить версию jQuery typings так
npm install --save @types/jquery@latest
У меня была такая же ошибка, и я был, если в течение 5 дней серфинг в сети для a solution.it работал для меня, и это должно работать для вас
Если у вас есть необходимость использовать другие библиотеки в проектах --typescript-- не только в проектах - угол - вы можете искать tds (файл объявления TypeScript), которые являются depares и которые имеют информацию о методах, типах, функциях и т. д. , который может быть использован TypeScript, как правило, без необходимости импорта. объявить var-это последний ресурс
npm install @types/lib-name --save-dev
вы можете использовать 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' }), ] };