Adakah yang bisa memberitahu saya, bagaimana cara menggunakan jQuery dengan Angular ?
class MyComponent {
constructor() {
// how to query the DOM element from here?
}
}
Saya menyadari ada solusi seperti memanipulasi kelas atau id elemen DOM di muka, tapi saya berharap cara yang lebih bersih untuk melakukannya.
Jawaban:
Menggunakan jQuery dari Angular2 sangat mudah dibandingkan dengan ng1. Jika Anda menggunakan TypeScript, pertama-tama Anda bisa merujuk definisi naskah jQuery.
TypescriptDefinitions tidak diperlukan karena Anda bisa menggunakan
any
sebagai tipe untuk$
ataujQuery
Di komponen sudut Anda, Anda harus mereferensikan elemen DOM dari templat menggunakan
@ViewChild()
Setelah tampilan diinisialisasi Anda dapat menggunakannativeElement
properti objek ini dan meneruskan ke jQuery.Mendeklarasikan
$
(ataujQuery
) sebagai JQueryStatic akan memberi Anda referensi yang diketik ke jQuery.Contoh ini tersedia di plunker: http://plnkr.co/edit/Nq9LnK?p=preview
tslint akan mengeluh tentang
chosen
tidak menjadi properti di $, untuk memperbaikinya Anda dapat menambahkan definisi ke antarmuka JQuery di file * .d.ts kustom Andasumber
setTimeout
solusi diperlukan. Saya telah mencoba dengan beberapa komponen jQuery lainnya, dan sepertinya semuanya memerlukan solusi untuk inisialisasi yang benar. Saya harap ini akan berubah di masa depan rilis ng2Mengapa semua orang menjadikannya ilmu roket? Untuk siapa pun yang perlu melakukan beberapa hal dasar pada elemen statis, misalnya,
body
tag, lakukan saja ini:script
tag dengan path ke lib jquery Anda, tidak masalah di mana (dengan cara ini Anda juga dapat menggunakan tag kondisional IE untuk memuat versi jquery yang lebih rendah untuk IE9 dan lebih sedikit).export component
blok Anda memiliki fungsi yang memanggil kode Anda:$("body").addClass("done");
Normaly ini menyebabkan kesalahan deklarasi, jadi setelah semua impor dalam file .ts ini, tambahkandeclare var $:any;
dan Anda baik-baik saja!sumber
declare var $:any;
Untuk kemenangan!Inilah yang bekerja untuk saya.
LANGKAH 1 - Hal pertama yang pertama
LANGKAH 2 - IMPOR
#UPDATE -
Feb - 2017
Akhir-akhir ini, saya menulis kode dengan
ES6
alih - alihtypescript
dan saya dapat melakukannyaimport
tanpa* as $
diimport statement
. Seperti inilah tampilannya sekarang:Semoga berhasil.
sumber
import * as $ from 'jquery';
di app.module.ts untuk membuatnya tersedia untuk seluruh proyek. Dan btw: "Kenapa - save bukannya --save-dev?"import $ from 'jquery';
Itulah pernyataan impor jquery tercantik di halaman ini. Seperti apa tepatnya yang saya inginkan.Sekarang menjadi sangat mudah, Anda dapat melakukannya hanya dengan mendeklarasikan variabel jQuery dengan tipe apa pun di dalam pengontrol Angular2.
Tambahkan ini hanya setelah pernyataan impor dan sebelum dekorator komponen.
Untuk mengakses elemen apa pun dengan id X atau Kelas X, Anda hanya perlu melakukannya
sumber
Cara sederhana:
1. termasuk skrip
index.html
2. mendeklarasikan
my.component.ts
3. gunakan
sumber
Silakan ikuti langkah-langkah sederhana ini. Ini berhasil untuk saya. Mari kita mulai dengan aplikasi sudut 2 baru untuk menghindari kebingungan. Saya menggunakan cli Angular. Jadi, instal jika Anda belum memilikinya. https://cli.angular.io/
Langkah 1: Buat aplikasi demo sudut 2
Anda bisa menggunakan nama apa saja. Sekarang periksa apakah itu berfungsi dengan menjalankan di bawah cmd. (Sekarang, pastikan bahwa Anda menunjuk ke 'jquery-demo' jika tidak menggunakan perintah cd)
Anda akan melihat "aplikasi bekerja!" di browser.
Langkah 2: Instal Bower (Pengelola paket untuk web)
Jalankan perintah ini di cli (pastikan Anda menunjuk ke 'jquery-demo' jika tidak menggunakan perintah cd):
Sekarang setelah instalasi bower berhasil, Buat file 'bower.json' dengan menggunakan perintah di bawah ini:
Ini akan meminta input, cukup tekan enter untuk semua jika Anda ingin nilai default dan pada akhirnya ketik "Ya" ketika akan bertanya "Terlihat bagus?"
Sekarang Anda dapat melihat file baru (bower.json) di folder "jquery-demo". Anda dapat menemukan lebih banyak info di https://bower.io/
Langkah 3: Instal jquery
Jalankan perintah ini
Ini akan membuat folder baru (bower_components) yang akan berisi folder instalasi jquery. Sekarang Anda telah menginstal jquery di folder 'bower_components'.
Langkah 4: Tambahkan lokasi jquery di file 'angular-cli.json'
Buka file 'angular-cli.json' (ada di folder 'jquery-demo') dan tambahkan lokasi jquery di "skrip". Ini akan terlihat seperti ini:
Langkah 5: Tulis kode jquery sederhana untuk pengujian
Buka file 'app.component.html' dan tambahkan baris kode sederhana, File akan terlihat seperti ini:
Sekarang Buka file 'app.component.ts' dan tambahkan deklarasi variabel jquery dan kode untuk tag 'p'. Anda juga harus menggunakan kait siklus hidup ngAfterViewInit (). Setelah melakukan perubahan file akan terlihat seperti ini:
Sekarang jalankan aplikasi sudut 2 Anda dengan menggunakan perintah 'ng serve' dan mengujinya. Itu harus bekerja.
sumber
$("p").click(function(){ $(this).hide(); });
" contoh terbaik saat tidak menggunakan jQuery di Angular ?!npm install jquery --save
, lalu"scripts":["../node_modules/jquery/dist/jquery.js"]
, laluimport $ from 'jquery';
dalam file * .ts. Apa keuntungan menggunakan bower?npm install bower
dihasilkan:npm WARN deprecated [email protected]:
( stackoverflow.com/a/31219726/3806701 )Anda dapat mengimplementasikan kait siklus hidup ngAfterViewInit () untuk menambahkan beberapa manipulasi DOM
Hati-hati saat menggunakan router karena angular2 dapat mendaur ulang tampilan .. jadi Anda harus yakin bahwa manipulasi elemen DOM hanya dilakukan pada panggilan pertama afterViewInit .. (Anda dapat menggunakan variabel boolean statis untuk melakukannya)
sumber
Property 'domElement' does not exist on type ElementRef
Saya melakukannya dengan cara yang lebih sederhana - instal jquery pertama kali oleh npm di konsol:
npm install jquery -S
dan kemudian di file komponen, saya hanya menulis:let $ = require('.../jquery.min.js')
dan itu berhasil! Berikut contoh lengkap dari beberapa kode saya:Pada teplate saya punya misalnya:
EDIT
Atau alih-alih menggunakan:
menggunakan
dan di index.html Anda cantumkan:
Ini akan menginisialisasi jquery hanya sekali globaly - ini penting misalnya untuk menggunakan modal windows di bootstrap ...
sumber
console.log({ conatiner : this.container});
perbaiki untukconsole.log({ container: this.container});
langkah 1: gunakan perintah: npm install jquery --save
langkah 2: Anda cukup mengimpor sudut sebagai:
impor $ dari 'jquery';
itu saja .
Contohnya adalah:
sumber
// menginstal jquery
npm install jquery --save
// instal tipe defintion untuk jquery
typings install dt~jquery --global --save
// menambahkan perpustakaan jquery ke file konfigurasi build seperti yang ditentukan (dalam file "angular-cli-build.js")
// jalankan build untuk menambahkan perpustakaan jquery di build
ng build
// menambahkan konfigurasi jalur relatif (dalam sistem-config.js)
/** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };
// impor perpustakaan jquery di file komponen Anda
di bawah ini adalah cuplikan kode dari komponen sampel saya
sumber
Jika Anda menggunakan angular-cli yang dapat Anda lakukan:
Instal ketergantungan :
npm instal jquery --save
npm instal @ types / jquery --save-dev
Impor file :
Tambahkan "../node_modules/jquery/dist/jquery.min.js" ke bagian "script" di file .angular-cli.json
Nyatakan jquery :
Tambahkan "$" ke bagian "types" dari tsconfig.app.json
Anda dapat menemukan rincian lebih lanjut tentang dokumen klinis sudut resmi
sumber
Untuk Menggunakan Jquery di Angular2 (4)
Ikuti setps ini
instal definisi tipe Jquery dan Juqry
Untuk Instalasi Jquery
npm install jquery --save
Untuk Instalasi defination Jenis Jquery
npm install @types/jquery --save-dev
dan kemudian cukup mengimpor jquery
sumber
Menggunakan Angular Cli
Di angular.json di bawah susunan skrip
Sekarang untuk menggunakan jQuery, yang harus Anda lakukan adalah mengimpornya sebagai berikut dalam komponen apa pun yang ingin Anda gunakan jQuery.
Misalnya mengimpor dan menggunakan jQuery di komponen root
sumber
Karena saya bodoh, saya pikir akan lebih baik memiliki beberapa kode yang berfungsi.
Juga, versi Angular2 mengetik sudut-busur derajat memiliki masalah dengan jQuery
$
, jadi jawaban yang diterima teratas tidak memberi saya kompilasi bersih.Berikut langkah-langkah yang harus saya lakukan:
index.html
Di dalam my.component.ts
sumber
Cukup tulis
setelah semua bagian impor, Anda dapat menggunakan jQuery dan memasukkan perpustakaan jQuery di halaman index.html Anda
itu berhasil untuk saya
sumber
1) Untuk mengakses komponen DOM.
Anda dapat memasukkan jQuery dengan cara berikut. 2) Sertakan file jquery Anda di index.html sebelum angular2 dimuat
Anda dapat menggunakan Jquery dengan cara berikut, Ini saya menggunakan pemilih tanggal JQuery Ui.
Ini bekerja untuk saya.
sumber
Saya melewatkan instalasi jquery karena titik ini telah disebutkan di semua pos yang dibuat sebelum tambang. Jadi, Anda sudah menginstal jquery. Mengimpor t ke komponen Anda seperti ini
akan bekerja, tetapi ada cara lain 'sudut' untuk melakukan ini dengan membuat layanan.
Langkah no. 1: buat file jquery.service.ts .
Langkah. tidak. 2: daftarkan layanan di app.module.ts
Langkah no. 3: menyuntikkan layanan ke komponen saya-super-duper.component.ts
Saya akan sangat berterima kasih jika seseorang dapat menjelaskan pro dan kontra dari kedua metode: DI jquery sebagai layanan vs impor * sebagai $ dari 'jquery';
sumber
Cara paling efektif yang saya temukan adalah menggunakan setTimeout dengan waktu 0 di dalam halaman / komponen konstruktor. Ini memungkinkan jQuery berjalan dalam siklus eksekusi berikutnya setelah Angular selesai memuat semua komponen anak. Beberapa metode komponen lain dapat digunakan tetapi semua yang saya coba bekerja dengan baik ketika dijalankan di dalam setTimeout.
sumber
ngOnInit()
daripada inisetTimeout
tidak benar-benar berfungsi jika Anda memiliki banyak item*ngFor
untuk menyelesaikannya.Inilah yang bekerja untuk saya - Angular 2 dengan webpack
Saya mencoba mendeklarasikan
$
sebagai tipeany
tetapi setiap kali saya mencoba menggunakan modul JQuery apa pun yang saya peroleh (misalnya)$(..).datepicker()
bukan fungsiKarena saya memiliki Jquery yang disertakan dalam file vendor.ts saya, saya hanya mengimpornya ke komponen saya menggunakan
import * as $ from 'jquery';
Saya dapat menggunakan plugin Jquery (seperti bootstrap-datetimepicker) sekarang
sumber
Anda juga dapat mencoba mengimpornya dengan "InjectionToken". Seperti yang dijelaskan di sini: Gunakan jQuery di Angular / Typescript tanpa definisi tipe
Anda cukup menyuntikkan instance global jQuery dan menggunakannya. Untuk ini, Anda tidak akan memerlukan definisi atau pengetikan tipe apa pun.
Ketika diatur dengan benar di app.module.ts Anda:
Anda dapat mulai menggunakannya di komponen Anda:
sumber
Instalasi Perpustakaan Global sebagai dokumentasi resmi di sini
Pasang dari npm:
npm install jquery --save
Tambahkan file skrip yang diperlukan ke skrip:
"scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],
Mulai ulang server jika Anda menjalankannya, dan itu seharusnya berfungsi pada aplikasi Anda.
Jika Anda ingin menggunakan di dalam satu komponen, gunakan
import $ from 'jquery';
di dalam komponen Andasumber
Yang lain sudah diposting. tetapi saya memberikan contoh sederhana di sini sehingga dapat membantu beberapa pendatang baru.
Langkah-1: Di cd. jquery referensi file index.html Anda
Langkah-2: asumsikan kita ingin menampilkan div atau menyembunyikan div saat mengklik tombol:
Langkah-3: Di file komponen di bawah impor menyatakan $ sebagai di bawah:
daripada membuat fungsi seperti di bawah ini:
Ini akan bekerja dengan Angular dan JQuery terbaru
sumber
Pertama, instal jQuery menggunakan npm sebagai berikut:
Kedua, buka file ./angular-cli.json di root folder proyek Angular CLI Anda, dan temukan skrip: [] properti, dan sertakan path ke jQuery sebagai berikut:
Sekarang, untuk menggunakan jQuery, yang harus Anda lakukan adalah mengimpornya dalam komponen apa pun yang Anda ingin gunakan jQuery.
Lihatlah kode di bawah ini yang menggunakan jQuery untuk menghidupkan div saat klik, terutama di baris kedua. Kami mengimpor semuanya sebagai $ dari jQuery.
sumber
Instal jquery
Terminal $
npm install jquery
(Untuk bootstrap 4 ...)
Terminal $
npm install popper.js
Terminal $
npm install bootstrap
Kemudian tambahkan
import
pernyataan keapp.module.ts
.(Untuk bootstrap 4 ...)
Sekarang Anda tidak lagi memerlukan
<SCRIPT>
tag untuk referensi JavaScript.(CSS apa pun yang ingin Anda gunakan masih harus dirujuk
styles.css
)sumber
Saat Anda menggunakan Angular, cobalah untuk tidak menggunakan perpustakaan jquery. Coba gunakan fitur dan pustaka yang diproduksi untuk kerangka sudut. Jika Anda ingin menggunakan fungsi jquery seperti find () , html () , terdekat () dan lain-lain, saya sarankan menggunakan js murni. contoh: querySelector () , innerHTML , parentElement dan lain-lain ...
sumber