¿Alguien puede decirme cómo usar jQuery con Angular ?
class MyComponent {
constructor() {
// how to query the DOM element from here?
}
}
Soy consciente de que existen soluciones alternativas, como manipular la clase o la identificación del elemento DOM por adelantado, pero espero una forma más limpia de hacerlo.
Respuestas:
Usar jQuery de Angular2 es muy sencillo en comparación con ng1. Si está utilizando TypeScript, primero puede hacer referencia a la definición de mecanografiado de jQuery.
Las definiciones de mecanografiado no son necesarias, ya que podría usarlas
any
como tipo para$
ojQuery
En su componente angular, debe hacer referencia a un elemento DOM de la plantilla usando
@ViewChild()
Después de que la vista se haya inicializado, puede usar lanativeElement
propiedad de este objeto y pasarla a jQuery.Declarar
$
(ojQuery
) como JQueryStatic le dará una referencia escrita a jQuery.Este ejemplo está disponible en plunker: http://plnkr.co/edit/Nq9LnK?p=preview
tslint se quejará de
chosen
no ser una propiedad en $, para solucionar esto puede agregar una definición a la interfaz JQuery en su archivo personalizado * .d.tsfuente
setTimeout
se requiere la solución. He intentado con varios otros componentes de jQuery, y parece que todos ellos requieren esta solución para una inicialización correcta. Espero que esto cambie en el lanzamiento futuro de ng2¿Por qué todos lo están convirtiendo en una ciencia espacial? Para cualquier otra persona que necesite hacer algunas cosas básicas sobre elementos estáticos, por ejemplo,
body
etiqueta, simplemente haga esto:script
etiqueta con la ruta a su lib jquery, no importa dónde (de esta manera también puede usar etiquetas condicionales de IE para cargar una versión inferior de jquery para IE9 y menos).export component
bloque, tenga una función que llame a su código:$("body").addClass("done");
normalmente esto causa un error de declaración, así que justo después de todas las importaciones en este archivo .ts, agreguedeclare var $:any;
y ¡listo!fuente
declare var $:any;
¡por la victoria!Esto es lo que funcionó para mí.
PASO 1 - Primero lo primero
PASO 2 - IMPORTACIÓN
#UPDATE -
Feb - 2017
Últimamente, estoy escribiendo código con en
ES6
lugar detypescript
y puedoimport
sin* as $
en elimport statement
. Así es como se ve ahora:Buena suerte.
fuente
import * as $ from 'jquery';
en app.module.ts para que esté disponible para todo el proyecto. Y por cierto: "¿Por qué --save en lugar de --save-dev?"import $ from 'jquery';
Esa es la declaración de importación de jquery más bonita de esta página. Exactamente cómo me gustaría que se vea.Ahora se ha vuelto muy fácil. Puede hacerlo simplemente declarando la variable jQuery con cualquier tipo dentro del controlador Angular2.
Agregue esto justo después de las declaraciones de importación y antes del decorador de componentes.
Para acceder a cualquier elemento con id X o Class X solo tienes que hacer
fuente
Una manera simple:
1. incluir script
index.html
2. declarar
my.component.ts
3. uso
fuente
Por favor, siga estos sencillos pasos. Funcionó para mi. Comencemos con una nueva aplicación angular 2 para evitar confusiones. Estoy usando Angular cli. Por lo tanto, instálelo si aún no lo tiene. https://cli.angular.io/
Paso 1: crea una aplicación de demostración angular 2
Puedes usar cualquier nombre. Ahora verifique si está funcionando ejecutando debajo de cmd. (Ahora, asegúrese de estar apuntando a 'jquery-demo' si no usa el comando cd)
verá "¡la aplicación funciona!" en el navegador
Paso 2: Instalar Bower (un administrador de paquetes para la web)
Ejecute este comando en cli (asegúrese de apuntar a 'jquery-demo' si no usa el comando cd):
Ahora, después de la instalación exitosa de bower, cree un archivo 'bower.json' utilizando el siguiente comando:
Solicitará entradas, solo presione enter para todos si desea valores predeterminados y al final escriba "Sí" cuando le pregunte "¿Se ve bien?"
Ahora puede ver un nuevo archivo (bower.json) en la carpeta "jquery-demo". Puede encontrar más información en https://bower.io/
Paso 3: Instalar jquery
Ejecute este comando
Creará una nueva carpeta (bower_components) que contendrá la carpeta de instalación de jquery. Ahora tiene jquery instalado en la carpeta 'bower_components'.
Paso 4: Agregue la ubicación de jquery en el archivo 'angular-cli.json'
Abra el archivo 'angular-cli.json' (presente en la carpeta 'jquery-demo') y agregue la ubicación de jquery en "scripts". Se verá así:
Paso 5: escriba un código jquery simple para probar
Abra el archivo 'app.component.html' y agregue una línea de código simple. El archivo se verá así:
Ahora abra el archivo 'app.component.ts' y agregue la declaración de variable jquery y el código para la etiqueta 'p'. También debe usar el ciclo de vida hook ngAfterViewInit (). Después de hacer cambios, el archivo se verá así:
Ahora ejecute su aplicación angular 2 usando el comando 'ng serve' y pruébelo. Deberia de funcionar.
fuente
$("p").click(function(){ $(this).hide(); });
" ¿El mejor ejemplo de cuándo no usar jQuery en Angular?npm install jquery --save
, luego"scripts":["../node_modules/jquery/dist/jquery.js"]
, luegoimport $ from 'jquery';
en archivos * .ts. ¿Cuál es la ventaja de usar bower?npm install bower
cedido:npm WARN deprecated [email protected]:
( stackoverflow.com/a/31219726/3806701 )Puede implementar el enlace de ciclo de vida ngAfterViewInit () para agregar algunas manipulaciones DOM
Tenga cuidado al usar el enrutador porque angular2 puede reciclar vistas ... por lo que debe asegurarse de que las manipulaciones de los elementos DOM se realicen solo en la primera llamada de afterViewInit ... (Puede usar variables booleanas estáticas para hacerlo)
fuente
Property 'domElement' does not exist on type ElementRef
Lo hago de una manera más simple: primero instalo jquery by npm en la consola:
npm install jquery -S
y luego en el archivo de componente, simplemente escribo: ¡let $ = require('.../jquery.min.js')
y funciona! Aquí ejemplo completo de algunos mi código:En teplate tengo por ejemplo:
EDITAR
Alternativamente, en lugar de usar:
utilizar
y en su index.html ponga:
Esto inicializará jquery solo una vez globalmente; esto es importante, por ejemplo, para usar ventanas modales en bootstrap ...
fuente
console.log({ conatiner : this.container});
arreglarloconsole.log({ container: this.container});
paso 1: usa el comando: npm install jquery --save
Paso 2: simplemente puedes importar angular como:
importar $ desde 'jquery';
eso es todo .
Un ejemplo sería:
fuente
// instalando jquery
npm install jquery --save
// instalación de la definición de tipo para jquery
typings install dt~jquery --global --save
// agregando la biblioteca jquery al archivo de configuración de compilación como se especifica (en el archivo "angular-cli-build.js")
// ejecuta la compilación para agregar la biblioteca jquery en la compilación
ng build
// agregando la configuración de ruta relativa (en system-config.js)
/** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };
// importa la biblioteca jquery en tu archivo componente
a continuación se muestra el fragmento de código de mi componente de muestra
fuente
Si usa angular-cli puede hacer:
Instalar la dependencia :
npm install jquery --save
npm install @ types / jquery --save-dev
Importa el archivo :
Agregue "../node_modules/jquery/dist/jquery.min.js" a la sección "script" en el archivo .angular-cli.json
Declarar jquery :
Agregue "$" a la sección "tipos" de tsconfig.app.json
Puedes encontrar más detalles sobre el documento oficial de angular cli
fuente
Para usar Jquery en Angular2 (4)
Sigue estos ajustes
instale la definición de tipo Jquery y Juqry
Para la instalación de Jquery
npm install jquery --save
Para la instalación de definición de tipo Jquery
npm install @types/jquery --save-dev
y luego simplemente importa el jquery
fuente
Usando Cli Angular
En angular.json debajo de la matriz de scripts
Ahora para usar jQuery, todo lo que tiene que hacer es importarlo de la siguiente manera en cualquier componente que desee usar jQuery.
Por ejemplo, importar y usar jQuery en el componente raíz
fuente
Como soy un tonto, pensé que sería bueno tener un código funcional.
Además, la versión de tipificación Angular2 del transportador angular tiene problemas con jQuery
$
, por lo que la respuesta más aceptada no me da una compilación limpia.Estos son los pasos que llegué a estar trabajando:
index.html
Dentro de my.component.ts
fuente
Solo escribe
después de todas las secciones de importación, puede usar jQuery e incluir la biblioteca jQuery en su página index.html
funciono para mi
fuente
1) Para acceder a DOM en el componente.
Puede incluir jQuery de la siguiente manera. 2) Incluya su archivo jquery en index.html antes de las cargas angulares2
Puede usar Jquery de la siguiente manera, aquí estoy usando el selector de fecha JQuery Ui.
Este trabajo para mi.
fuente
Estoy omitiendo la instalación de jquery ya que este punto se ha mencionado en todas las publicaciones creadas antes de la mía. Entonces, ya has instalado jquery. Importando t en su componente de esta manera
funcionará, pero hay otra forma "angular" de hacerlo creando un servicio.
Paso no. 1: crea el archivo jquery.service.ts .
Paso. No. 2: registre el servicio en app.module.ts
Paso no. 3: inyecta el servicio en tu componente my-super-duper.component.ts
Estaré muy agradecido si alguien puede explicar los pros y los contras de ambos métodos: DI jquery como servicio versus import * as $ de 'jquery';
fuente
La forma más efectiva que he encontrado es usar setTimeout con un tiempo de 0 dentro del constructor de página / componente. Esto permite que jQuery se ejecute en el siguiente ciclo de ejecución después de que Angular haya terminado de cargar todos los componentes secundarios. Se podrían usar algunos otros métodos de componentes, pero todos los que he intentado funcionan mejor cuando se ejecutan dentro de un setTimeout.
fuente
ngOnInit()
lugar de estosetTimeout
en realidad no funciona si tienes muchos elementos*ngFor
para renderizar.Esto es lo que funcionó para mí: Angular 2 con webpack
Intenté declarar
$
como tipo,any
pero cada vez que intenté usar cualquier módulo JQuery que estaba obteniendo (por ejemplo)$(..).datepicker()
no es una funciónComo tengo Jquery incluido en mi archivo vendor.ts, simplemente lo importé a mi componente usando
import * as $ from 'jquery';
Ahora puedo usar los complementos de Jquery (como bootstrap-datetimepicker)
fuente
También puede intentar importarlo con el "InjectionToken". Como se describe aquí: use jQuery en angular / mecanografiado sin una definición de tipo
Simplemente puede inyectar la instancia global de jQuery y usarla. Para esto no necesitará ninguna definición de tipo o tipificación.
Cuando se configura correctamente en su app.module.ts:
Puede comenzar a usarlo en sus componentes:
fuente
Instalación de la Biblioteca Global como documentación oficial aquí
Instalar desde npm:
npm install jquery --save
Agregue los archivos de script necesarios a los scripts:
"scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],
Reinicie el servidor si lo está ejecutando, y debería estar funcionando en su aplicación.
Si desea usar dentro de un solo componente, use
import $ from 'jquery';
dentro de su componentefuente
Otros ya publicaron. pero doy un ejemplo simple aquí para que pueda ayudar a algunos recién llegados.
Paso 1: en su referencia index.html jquery cdn
Paso 2: suponga que queremos mostrar div u ocultar div al hacer clic en un botón:
Paso-3: en el archivo de componentes a continuación, la importación declara $ como se muestra a continuación:
que crear una función como abajo:
Funcionará con los últimos Angular y JQuery
fuente
Primero, instale jQuery usando npm de la siguiente manera:
En segundo lugar, vaya al archivo ./angular-cli.json en la raíz de la carpeta de su proyecto CLI Angular, y encuentre los scripts: propiedad [] e incluya la ruta a jQuery de la siguiente manera:
Ahora, para usar jQuery, todo lo que tiene que hacer es importarlo en cualquier componente que desee usar jQuery.
Eche un vistazo al siguiente código que usa jQuery para animar div al hacer clic, especialmente en la segunda línea. Estamos importando todo como $ desde jQuery.
fuente
Instalar jquery
Terminal $
npm install jquery
(Para bootstrap 4 ...)
Terminal $
npm install popper.js
Terminal $
npm install bootstrap
Luego agregue la
import
declaración aapp.module.ts
.(Para bootstrap 4 ...)
Ahora ya no necesitará
<SCRIPT>
etiquetas para hacer referencia al JavaScript.(Cualquier CSS que desee usar aún debe ser referenciado
styles.css
)fuente
Cuando use Angular, intente no usar la biblioteca jquery. Intente usar las características y las bibliotecas que se producen para el marco angular. Si desea utilizar las funciones jquery como find () , html () , arest () y etc., sugiero usar js puro. ejemplo: querySelector () , innerHTML , parentElement y etc.
fuente