Может кто-нибудь сказать мне, как использовать JQuery с Angular ?
class MyComponent {
constructor() {
// how to query the DOM element from here?
}
}
Я знаю, что есть обходные пути, такие как манипулирование классом или идентификатором элемента DOM заранее, но я надеюсь на более чистый способ сделать это.
Ответы:
Использование jQuery от Angular2 - это бриз по сравнению с ng1. Если вы используете TypeScript, вы можете сначала обратиться к определению машинописи jQuery.
TypescriptDefinitions не требуются, так как вы можете просто использовать
any
в качестве типа для$
илиjQuery
В вашем угловом компоненте вы должны ссылаться на элемент DOM из шаблона, используя
@ViewChild()
После инициализации представления вы можете использоватьnativeElement
свойство этого объекта и перейти к jQuery.Объявление
$
(илиjQuery
) как JQueryStatic даст вам типизированную ссылку на jQuery.Этот пример доступен на плункере: http://plnkr.co/edit/Nq9LnK?p=preview
tslint будет жаловаться на то, что
chosen
не является свойством на $, чтобы исправить это, вы можете добавить определение к интерфейсу JQuery в свой файл * .d.ts.источник
setTimeout
требуется обходной путь. Я пробовал с несколькими другими компонентами jQuery, и кажется, что все они требуют этого обходного пути для правильной инициализации. Я надеюсь, что это изменится в будущем выпуске ng2Почему все делают это ракетостроением? Для всех, кому нужно сделать некоторые базовые вещи над статическими элементами, например,
body
тег, просто сделайте это:script
тег с путем к вашей библиотеке jquery, не имеет значения где (таким образом вы также можете использовать условные теги IE для загрузки более низкой версии jquery для IE9 и менее).export component
блоке есть функция, которая вызывает ваш код:$("body").addClass("done");
обычно это вызывает ошибку объявления, так что после всего импорта в этот файл .ts добавьте,declare var $:any;
и вы готовы!источник
declare var $:any;
для победы!Это то, что сработало для меня.
ШАГ 1 - обо всем по порядку
ШАГ 2 - ИМПОРТ
#ОБНОВИТЬ -
Feb - 2017
В последнее время я пишу код с
ES6
вместоtypescript
и могуimport
без* as $
вimport statement
. Вот как это выглядит сейчас:Удачи.
источник
import * as $ from 'jquery';
в app.module.ts, чтобы сделать его доступным для всего проекта. И кстати: "Почему --save вместо --save-dev?"import $ from 'jquery';
Это самый красивый оператор импорта jquery на этой странице. Именно так, как я хотел бы, чтобы это выглядело.Теперь это стало очень просто. Вы можете сделать это, просто объявив переменную jQuery любого типа внутри контроллера Angular2.
Добавьте это сразу после операторов импорта и перед декоратором компонента.
Чтобы получить доступ к любому элементу с идентификатором X или Class X, вам просто нужно сделать
источник
Простой способ:
1. включить скрипт
index.html
2. объявить
my.component.ts
3. использовать
источник
Пожалуйста, следуйте этим простым шагам. Это сработало для меня. Давайте начнем с нового приложения Angular 2, чтобы избежать путаницы. Я использую Angular Cli. Итак, установите его, если у вас его еще нет. https://cli.angular.io/
Шаг 1. Создайте демо-приложение Angular 2
Вы можете использовать любое имя. Теперь проверьте, работает ли он, запустив ниже cmd. (Теперь убедитесь, что вы указываете на 'jquery-demo', если не используете команду cd)
вы увидите "приложение работает!" в браузере.
Шаг 2: Установите Bower (менеджер пакетов для Интернета)
Запустите эту команду на cli (убедитесь, что вы указываете на 'jquery-demo', если не используете команду cd):
Теперь, после успешной установки bower, создайте файл 'bower.json' с помощью следующей команды:
Он будет запрашивать ввод, просто нажмите ввод для всех, если вы хотите значения по умолчанию, и в конце введите «Да», когда он спросит «Хорошо выглядит?»
Теперь вы можете увидеть новый файл (bower.json) в папке "jquery-demo". Вы можете найти больше информации на https://bower.io/
Шаг 3: Установите jquery
Запустите эту команду
Это создаст новую папку (bower_components), которая будет содержать установочную папку jquery. Теперь у вас установлен jquery в папке 'bower_components'.
Шаг 4: Добавьте местоположение jquery в файл angular-cli.json
Откройте файл angular-cli.json (присутствует в папке jquery-demo) и добавьте расположение jquery в «scripts». Это будет выглядеть так:
Шаг 5: написать простой код jquery для тестирования
Откройте файл app.component.html и добавьте простую строку кода. Файл будет выглядеть следующим образом:
Теперь откройте файл app.component.ts и добавьте объявление переменной jquery и код для тега p. Вам также следует использовать хук жизненного цикла ngAfterViewInit (). После внесения изменений файл будет выглядеть так:
Теперь запустите приложение angular 2 с помощью команды «ng serve» и протестируйте его. Он должен работать.
источник
$("p").click(function(){ $(this).hide(); });
" лучший пример того, когда не использовать jQuery в Angular ?!npm install jquery --save
, затем"scripts":["../node_modules/jquery/dist/jquery.js"]
, затемimport $ from 'jquery';
в * .ts файлах. В чем преимущество использования беседки?npm install bower
npm WARN deprecated bower@1.8.0:
Вы можете реализовать хук жизненного цикла ngAfterViewInit (), чтобы добавить некоторые манипуляции с DOM
Будьте осторожны при использовании маршрутизатора, поскольку angular2 может перезапускать представления ... поэтому вы должны быть уверены, что манипуляции с элементами DOM выполняются только при первом вызове afterViewInit .. (для этого можно использовать статические логические переменные)
источник
Property 'domElement' does not exist on type ElementRef
Я делаю это более простым способом - сначала установите jquery с помощью npm в консоли:
npm install jquery -S
а затем в файле компонента я просто пишу:let $ = require('.../jquery.min.js')
и это работает! Вот полный пример из некоторого моего кода:В teplate у меня есть, например:
РЕДАКТИРОВАТЬ
В качестве альтернативы вместо использования:
использование
и в ваш index.html положить:
Это инициализирует jquery только один раз в глобальном масштабе - это важно, например, для использования модальных окон в начальной загрузке ...
источник
console.log({ conatiner : this.container});
исправить этоconsole.log({ container: this.container});
Шаг 1: используйте команду: npm install jquery --save
шаг 2: вы можете просто импортировать angular как:
импортировать $ из 'jquery';
вот и все .
Примером может быть:
источник
// установка jquery
npm install jquery --save
// установка определения типа для jquery
typings install dt~jquery --global --save
// добавление библиотеки jquery в файл конфигурации сборки, как указано (в файле "angular-cli-build.js")
// запускаем сборку, чтобы добавить библиотеку jquery в сборку
ng build
// добавление конфигурации относительного пути (в system-config.js)
/** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };
// импортируем библиотеку jquery в ваш файл компонента
ниже приведен фрагмент кода моего примера компонента
источник
Если вы используете angular-cli, вы можете сделать:
Установите зависимость :
npm установить jquery --save
npm install @ types / jquery --save-dev
Импортировать файл :
Добавьте "../node_modules/jquery/dist/jquery.min.js" в раздел "script" в файле .angular-cli.json
Объявить jquery :
Добавьте «$» в раздел «types» tsconfig.app.json
Вы можете найти более подробную информацию на официальном угловом документе.
источник
Использовать Jquery в Angular2 (4)
Следуйте этим инструкциям
установить определение типа Jquery и Juqry
Для установки Jquery
npm install jquery --save
Для определения типа Jquery Установка
npm install @types/jquery --save-dev
а затем просто импортировать JQuery
источник
Использование Angular Cli
В angular.json под массив скриптов
Теперь, чтобы использовать jQuery, все, что вам нужно сделать, это импортировать его следующим образом в любой компонент, который вы хотите использовать jQuery.
Например, импорт и использование jQuery в корневом компоненте
источник
Так как я тупица, я подумал, что было бы хорошо иметь какой-нибудь рабочий код.
Кроме того, версия angular-транспортир Angular2 имеет проблемы с jQuery
$
, поэтому лучший ответ не дает мне чистую компиляцию.Вот шаги, которые я должен работать:
index.html
Внутри my.component.ts
источник
Просто пиши
после всех разделов импорта вы можете использовать jQuery и включить библиотеку jQuery на страницу index.html.
это сработало для меня
источник
1) Для доступа к DOM в компоненте.
Вы можете включить jQuery следующим образом. 2) Включите ваш файл jquery в index.html перед загрузкой angular2
Вы можете использовать Jquery следующим образом, здесь я использую JQuery Ui выбора даты.
Это работа для меня.
источник
Я пропускаю установку jquery, так как этот момент упоминался во всех постах, созданных до меня. Итак, вы уже установили jquery. Импортировать т в ваш компонент, как это
будет работать, но есть другой «угловой» способ сделать это путем создания службы.
Шаг № 1: создать файл jquery.service.ts .
Шаг. нет. 2: зарегистрировать сервис в app.module.ts
Шаг № 3: внедрить сервис в ваш компонент my-super-duper.component.ts
Буду очень признателен, если кто-нибудь сможет объяснить плюсы и минусы обоих методов: DI jquery как сервис против импорта * как $ из 'jquery';
источник
Самый эффективный способ, который я нашел, это использовать setTimeout со временем 0 внутри конструктора страницы / компонента. Это позволит запустить jQuery в следующем цикле выполнения после того, как Angular завершит загрузку всех дочерних компонентов. Могут быть использованы несколько других методов компонентов, но все, что я пробовал, работают лучше всего при запуске внутри setTimeout.
источник
ngOnInit()
а не этоsetTimeout
на самом деле не работает, если у вас есть много элементов*ngFor
для рендеринга.Вот что у меня сработало - Angular 2 с веб-пакетом
Я пытался объявить
$
как тип,any
но всякий раз, когда я пытался использовать любой модуль JQuery, который я получал (например),$(..).datepicker()
это не функцияПоскольку Jquery включен в мой файл vendor.ts, я просто импортировал его в свой компонент, используя
import * as $ from 'jquery';
Теперь я могу использовать плагины Jquery (например, bootstrap-datetimepicker)
источник
Вы также можете попробовать импортировать его с помощью «InjectionToken». Как описано здесь: Используйте jQuery в Angular / Typescript без определения типа
Вы можете просто внедрить глобальный экземпляр jQuery и использовать его. Для этого вам не понадобятся какие-либо определения типов или наборы.
Когда правильно установлено в вашем app.module.ts:
Вы можете начать использовать его в своих компонентах:
источник
Установка Глобальной библиотеки как официальная документация здесь
Установить с npm:
npm install jquery --save
Добавьте необходимые файлы сценариев в сценарии:
"scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],
Перезапустите сервер, если вы его используете, и он должен работать в вашем приложении.
Если вы хотите использовать внутри одного компонента, используйте
import $ from 'jquery';
внутри вашего компонентаисточник
Другие уже размещены. но я привожу простой пример, чтобы помочь некоторым новичкам.
Шаг 1: В вашем файле index.html ссылка на jquery cdn
Шаг 2: предположим, что мы хотим показать div или скрыть div при нажатии кнопки:
Шаг 3: В приведенном ниже файле компонента импорт объявляет $ как ниже:
чем создать функцию, как показано ниже:
Он будет работать с последними версиями Angular и JQuery.
источник
Сначала установите jQuery, используя npm следующим образом:
Во-вторых, перейдите к файлу ./angular-cli.json в корне вашей папки проекта Angular CLI, найдите свойство scripts: [] и укажите путь к jQuery следующим образом:
Теперь, чтобы использовать jQuery, все, что вам нужно сделать, это импортировать его в любой компонент, который вы хотите использовать jQuery.
Посмотрите на приведенный ниже код, который использует jQuery для анимации div при нажатии, особенно во второй строке. Мы импортируем все как $ из jQuery.
источник
Установить jquery
Терминал $
npm install jquery
(Для начальной загрузки 4 ...)
Терминал $
npm install popper.js
Терминал $
npm install bootstrap
Затем добавьте
import
утверждение вapp.module.ts
.(Для начальной загрузки 4 ...)
Теперь вам больше не понадобятся
<SCRIPT>
теги для ссылки на JavaScript.(На любой CSS, который вы хотите использовать, все еще нужно ссылаться
styles.css
)источник
Когда вы используете Angular, старайтесь не использовать библиотеку jquery. Попробуйте использовать функции и библиотеки, которые создаются для угловой структуры. Если вы хотите использовать функции jquery, такие как find () , html () , closest () и т. Д., Я предлагаю использовать чистый js. пример: querySelector () , innerHTML , parentElement и т. д.
источник