Quelqu'un peut-il me dire comment utiliser jQuery avec Angular ?
class MyComponent {
constructor() {
// how to query the DOM element from here?
}
}
Je suis conscient qu'il existe des solutions de contournement comme la manipulation de la classe ou de l' ID de l'élément DOM à l'avance, mais j'espère une façon plus propre de le faire.
Réponses:
L'utilisation de jQuery d'Angular2 est un jeu d'enfant par rapport à ng1. Si vous utilisez TypeScript, vous pouvez d'abord référencer la définition de typeScript jQuery.
TypescriptDefinitions ne sont pas requis car vous pouvez simplement utiliser
any
comme type pour$
oujQuery
Dans votre composant angulaire, vous devez référencer un élément DOM du modèle en utilisant Une
@ViewChild()
fois la vue initialisée, vous pouvez utiliser lanativeElement
propriété de cet objet et passer à jQuery.Déclarer
$
(oujQuery
) comme JQueryStatic vous donnera une référence typée à jQuery.Cet exemple est disponible sur plunker: http://plnkr.co/edit/Nq9LnK?p=preview
tslint se plaindra de
chosen
ne pas être une propriété sur $, pour résoudre ce problème, vous pouvez ajouter une définition à l'interface JQuery dans votre fichier personnalisé * .d.tsla source
setTimeout
solution de contournement est requise. J'ai essayé avec plusieurs autres composants jQuery, et il semble que tous nécessitent cette solution pour une initialisation correcte. J'espère que cela changera dans la prochaine version de ng2Pourquoi tout le monde en fait-il une science fusée? Pour toute autre personne qui a besoin de faire des choses de base sur des éléments statiques, par exemple,
body
tag, faites simplement ceci:script
balise avec le chemin d'accès à votre bibliothèque jquery, peu importe où (de cette façon, vous pouvez également utiliser des balises conditionnelles IE pour charger une version inférieure de jquery pour IE9 et moins).export component
bloc ont une fonction qui appelle votre code:$("body").addClass("done");
Normalement, cela provoque une erreur de déclaration, donc juste après toutes les importations dans ce fichier .ts, ajoutezdeclare var $:any;
et vous êtes prêt à partir!la source
declare var $:any;
pour la victoire!C'est ce qui a fonctionné pour moi.
ÉTAPE 1 - Tout d'abord
ÉTAPE 2 - IMPORTATION
#MISE À JOUR -
Feb - 2017
Dernièrement, j'écris du code avec
ES6
au lieu detypescript
et je peux m'enimport
passer* as $
dans leimport statement
. Voici à quoi cela ressemble maintenant:Bonne chance.
la source
import * as $ from 'jquery';
dans app.module.ts pour le rendre disponible pour l'ensemble du projet. Et btw: "Pourquoi --save au lieu de --save-dev?"import $ from 'jquery';
C'est la plus jolie déclaration d'importation jquery sur cette page imo. Exactement ce à quoi je voudrais qu'il ressemble.Maintenant, c'est devenu très facile, vous pouvez le faire en déclarant simplement la variable jQuery avec n'importe quel type à l'intérieur du contrôleur Angular2.
Ajoutez-le juste après les instructions d'importation et avant le décorateur de composants.
Pour accéder à n'importe quel élément avec l'id X ou la classe X, il suffit de faire
la source
Un moyen simple:
1. inclure le script
index.html
2. déclarer
my.component.ts
3. utiliser
la source
Veuillez suivre ces étapes simples. Ça a marché pour moi. Commençons par une nouvelle application angulaire 2 pour éviter toute confusion. J'utilise Angular cli. Alors, installez-le si vous ne l'avez pas déjà. https://cli.angular.io/
Étape 1: créer une application de démonstration angular 2
vous pouvez utiliser n'importe quel nom. Maintenant, vérifiez si cela fonctionne en exécutant ci-dessous cmd. (Maintenant, assurez-vous que vous pointez sur 'jquery-demo' si vous n'utilisez pas la commande cd)
vous verrez "l'application fonctionne!" sur le navigateur.
Étape 2: installer Bower (un gestionnaire de packages pour le Web)
Exécutez cette commande sur cli (assurez-vous que vous pointez sur 'jquery-demo' si vous n'utilisez pas la commande cd):
Maintenant, après une installation réussie de bower, créez un fichier 'bower.json' en utilisant la commande ci-dessous:
Il demandera des entrées, appuyez simplement sur Entrée pour tous si vous voulez des valeurs par défaut et à la fin tapez "Oui" quand il demandera "Ça a l'air bien?"
Vous pouvez maintenant voir un nouveau fichier (bower.json) dans le dossier "jquery-demo". Vous pouvez trouver plus d'informations sur https://bower.io/
Étape 3: installer jquery
Exécutez cette commande
Il créera un nouveau dossier (bower_components) qui contiendra le dossier d'installation de jquery. Vous avez maintenant installé jquery dans le dossier 'bower_components'.
Étape 4: ajouter l'emplacement jquery dans le fichier 'angular-cli.json'
Ouvrez le fichier 'angular-cli.json' (présent dans le dossier 'jquery-demo') et ajoutez l'emplacement jquery dans les "scripts". Il ressemblera à ceci:
Étape 5: Écrire un code jquery simple pour les tests
Ouvrez le fichier 'app.component.html' et ajoutez une simple ligne de code, le fichier ressemblera à ceci:
Maintenant, ouvrez le fichier «app.component.ts» et ajoutez la déclaration de variable jquery et le code pour la balise «p». Vous devez également utiliser le hook de cycle de vie ngAfterViewInit (). Après avoir apporté des modifications, le fichier ressemblera à ceci:
Maintenant, lancez votre application angular 2 en utilisant la commande 'ng serve' et testez-la. Ça devrait marcher.
la source
$("p").click(function(){ $(this).hide(); });
" meilleur exemple de quand n'utilisez pas jQuery dans Angular?!npm install jquery --save
, Puis"scripts":["../node_modules/jquery/dist/jquery.js"]
, puisimport $ from 'jquery';
dans les fichiers * .ts. Quel est l'avantage d'utiliser bower?npm install bower
cédé:npm WARN deprecated [email protected]:
( stackoverflow.com/a/31219726/3806701 )Vous pouvez implémenter le hook de cycle de vie ngAfterViewInit () pour ajouter des manipulations DOM
Soyez prudent lorsque vous utilisez le routeur car angular2 peut recycler les vues .. vous devez donc être sûr que les manipulations des éléments DOM ne sont effectuées que lors du premier appel de afterViewInit .. (Vous pouvez utiliser des variables booléennes statiques pour le faire)
la source
Property 'domElement' does not exist on type ElementRef
Je le fais de manière plus simple - installez d'abord jquery par npm dans la console:
npm install jquery -S
puis dans le fichier composant j'écris simplement:let $ = require('.../jquery.min.js')
et ça marche! Voici un exemple complet de mon code:En teplate j'ai par exemple:
ÉDITER
Alternativement au lieu d'utiliser:
utilisation
et dans votre index.html mettez:
Cela n'initialisera jquery qu'une seule fois dans le monde - c'est important par exemple pour utiliser des fenêtres modales dans le bootstrap ...
la source
console.log({ conatiner : this.container});
fixer àconsole.log({ container: this.container});
étape 1: utilisez la commande: npm install jquery --save
étape 2: vous pouvez simplement importer angulaire comme:
importer $ depuis 'jquery';
c'est tout .
Un exemple serait:
la source
// installation de jquery
npm install jquery --save
// installation de la définition de type pour jquery
typings install dt~jquery --global --save
// ajout de la bibliothèque jquery dans le fichier de configuration de construction comme spécifié (dans le fichier "angular-cli-build.js")
// exécute la build pour ajouter la bibliothèque jquery dans la build
ng build
// ajout de la configuration du chemin relatif (dans system-config.js)
/** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };
// importer la bibliothèque jquery dans votre fichier de composant
ci-dessous est l'extrait de code de mon exemple de composant
la source
Si vous utilisez angular-cli, vous pouvez faire:
Installez la dépendance :
npm install jquery --save
npm install @ types / jquery --save-dev
Importez le fichier :
Ajoutez "../node_modules/jquery/dist/jquery.min.js" à la section "script" du fichier .angular-cli.json
Déclarez jquery :
Ajoutez "$" à la section "types" de tsconfig.app.json
Vous pouvez trouver plus de détails sur le doc angulaire officiel
la source
Pour utiliser Jquery dans Angular2 (4)
Suivez ces étapes
installer la définition de type Jquery et Juqry
Pour l'installation de Jquery
npm install jquery --save
Pour l'installation de définition de type Jquery
npm install @types/jquery --save-dev
puis importez simplement le jquery
la source
Utiliser Angular Cli
Dans angular.json sous le tableau des scripts
Maintenant, pour utiliser jQuery, tout ce que vous avez à faire est de l'importer comme suit dans le composant que vous souhaitez utiliser jQuery.
Par exemple, importer et utiliser jQuery dans le composant racine
la source
Depuis que je suis un cancre, je pensais que ce serait bien d'avoir du code de travail.
En outre, la version de typage angulaire de angular-rapporteur a des problèmes avec jQuery
$
, donc la réponse acceptée en haut ne me donne pas une compilation claire.Voici les étapes que je dois travailler:
index.html
À l'intérieur de my.component.ts
la source
Ecrivez
après toutes les sections d'importation, vous pouvez utiliser jQuery et inclure la bibliothèque jQuery dans votre page index.html
ça a marché pour moi
la source
1) Pour accéder à DOM dans le composant.
Vous pouvez inclure jQuery de la manière suivante. 2) Incluez votre fichier jquery dans index.html avant les charges angular2
Vous pouvez utiliser Jquery de la manière suivante, ici j'utilise le sélecteur de date JQuery Ui.
Ce travail pour moi.
la source
Je saute l'installation de jquery car ce point a été mentionné dans tous les messages créés avant le mien. Vous avez donc déjà installé jquery. Importation de t dans votre composant comme ceci
fonctionnera, mais il existe une autre manière «angulaire» de le faire en créant un service.
Étape no. 1: créez le fichier jquery.service.ts .
Étape. non. 2: enregistrez le service dans app.module.ts
Étape no. 3: injectez le service dans votre composant my-super-duper.component.ts
Je serai très reconnaissant si quelqu'un peut expliquer les avantages et les inconvénients des deux méthodes: DI jquery en tant que service vs import * as $ from 'jquery';
la source
Le moyen le plus efficace que j'ai trouvé est d'utiliser setTimeout avec un temps de 0 à l'intérieur du constructeur de page / composant. Cela permet d'exécuter jQuery dans le prochain cycle d'exécution après que Angular ait terminé de charger tous les composants enfants. Quelques autres méthodes de composants pourraient être utilisées, mais tout ce que j'ai essayé fonctionne mieux lorsqu'il est exécuté dans un setTimeout.
la source
ngOnInit()
plutôt que celasetTimeout
ne fonctionne pas vraiment si vous avez de nombreux éléments*ngFor
pour rendre la finition.Voici ce qui a fonctionné pour moi - Angular 2 avec webpack
J'ai essayé de déclarer
$
comme typeany
mais chaque fois que j'ai essayé d'utiliser un module JQuery que j'obtenais (par exemple)$(..).datepicker()
n'est pas une fonctionÉtant donné que Jquery est inclus dans mon fichier vendor.ts, je l'ai simplement importé dans mon composant à l'aide de
import * as $ from 'jquery';
Je suis capable d'utiliser des plugins Jquery (comme bootstrap-datetimepicker) maintenant
la source
Vous pouvez également essayer de l'importer avec le "InjectionToken". Comme décrit ici: Utilisez jQuery dans Angular / Typescript sans définition de type
Vous pouvez simplement injecter l'instance globale jQuery et l'utiliser. Pour cela, vous n'aurez pas besoin de définitions de type ou de saisies.
Lorsqu'il est correctement défini dans votre app.module.ts:
Vous pouvez commencer à l'utiliser dans vos composants:
la source
Installation de la bibliothèque globale en tant que documentation officielle ici
Installer à partir de npm:
npm install jquery --save
Ajoutez les fichiers de script nécessaires aux scripts:
"scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],
Redémarrez le serveur si vous l'exécutez et il devrait fonctionner sur votre application.
Si vous souhaitez utiliser à l'intérieur d'un composant unique, utilisez l'
import $ from 'jquery';
intérieur de votre composantla source
D'autres déjà publiés. mais je donne un exemple simple ici afin que cela puisse aider certains nouveaux arrivants.
Étape 1: dans votre référence de fichier index.html jquery cdn
Étape 2: supposons que nous voulons afficher div ou masquer div en cliquant sur un bouton:
Étape 3: Dans le fichier de composants ci-dessous, l'importation déclare $ comme ci-dessous:
que créer une fonction comme ci-dessous:
Cela fonctionnera avec les dernières Angular et JQuery
la source
Tout d'abord, installez jQuery en utilisant npm comme suit:
Ensuite, accédez au fichier ./angular-cli.json à la racine de votre dossier de projet CLI Angular, recherchez la propriété scripts: [] et incluez le chemin d'accès à jQuery comme suit:
Maintenant, pour utiliser jQuery, tout ce que vous avez à faire est de l'importer dans le composant que vous souhaitez utiliser jQuery.
Jetez un œil au code ci-dessous qui utilise jQuery pour animer div au clic, en particulier dans la deuxième ligne. Nous importons tout sous forme de $ à partir de jQuery.
la source
Installer jquery
Terminal $
npm install jquery
(Pour bootstrap 4 ...)
Terminal $
npm install popper.js
Terminal $
npm install bootstrap
Ajoutez ensuite l'
import
instruction àapp.module.ts
.(Pour bootstrap 4 ...)
Désormais, vous n'aurez plus besoin de
<SCRIPT>
balises pour référencer le JavaScript.(Tout CSS que vous souhaitez utiliser doit encore être référencé
styles.css
)la source
Lorsque vous utilisez Angular, essayez de ne pas utiliser la bibliothèque jquery. Essayez d'utiliser les fonctionnalités et les bibliothèques produites pour le cadre angulaire. Si vous souhaitez utiliser les fonctions jquery comme find () , html () , le plus proche () et etc., je suggère d'utiliser les js purs. exemple: querySelector () , innerHTML , parentElement et etc ...
la source