Alguém pode me dizer, como usar o jQuery com Angular ?
class MyComponent {
constructor() {
// how to query the DOM element from here?
}
}
Estou ciente de que existem soluções alternativas, como manipular a classe ou o ID do elemento DOM antecipadamente, mas espero uma maneira mais limpa de fazer isso.
Respostas:
Usar o jQuery do Angular2 é muito fácil comparado ao ng1. Se você estiver usando o TypeScript, poderá primeiro fazer referência à definição de texto datilografado do jQuery.
As definições de TypeScript não são necessárias, pois você pode usar apenas
any
como o tipo para$
oujQuery
No seu componente angular, você deve referenciar um elemento DOM do modelo usando
@ViewChild()
Depois que a visualização foi inicializada, você pode usar anativeElement
propriedade desse objeto e passar para o jQuery.Declarar
$
(oujQuery
) como JQueryStatic fornecerá uma referência digitada ao jQuery.Este exemplo está disponível no plunker: http://plnkr.co/edit/Nq9LnK?p=preview
O tslint se queixará de
chosen
não ser uma propriedade em $. Para corrigir isso, você pode adicionar uma definição à interface JQuery no seu arquivo * .d.ts personalizadofonte
setTimeout
solução alternativa é necessária. Eu tentei com vários outros componentes do jQuery e parece que todos eles exigem essa solução alternativa para a inicialização correta. Espero que isso irá mudar em futuras versões do NG2Por que todo mundo está fazendo disso uma ciência de foguetes? Para qualquer pessoa que precise fazer algumas coisas básicas sobre elementos estáticos, por exemplo,
body
tag, faça o seguinte:script
tag com o caminho para sua jquery lib, não importa onde (dessa forma, você também pode usar tags condicionais do IE para carregar a versão inferior do jquery para o IE9 e menos).export component
bloco, tenha uma função que chama seu código:$("body").addClass("done");
Normalmente, isso causa erro de declaração; logo, depois de todas as importações nesse arquivo .ts, adicionedeclare var $:any;
e você estará pronto !fonte
declare var $:any;
para a vitória!Isto é o que funcionou para mim.
PASSO 1 - Primeiras coisas primeiro
PASSO 2 - IMPORTAÇÃO
#UPDATE -
Feb - 2017
Ultimamente, eu estou escrevendo código com
ES6
em vez detypescript
e sou capaz deimport
, sem* as $
noimport statement
. É assim que parece agora:Boa sorte.
fonte
import * as $ from 'jquery';
em app.module.ts para disponibilizá-lo para todo o projeto. E btw: "Por que --save em vez de --save-dev?"import $ from 'jquery';
Essa é a declaração de importação de jquery mais bonita desta página. Exatamente como eu gostaria que fosse.Agora ficou muito fácil. Você pode fazer isso simplesmente declarando a variável jQuery com qualquer tipo dentro do controlador Angular2.
Adicione isso logo após as instruções de importação e antes do decorador de componentes.
Para acessar qualquer elemento com o ID X ou Classe X, basta fazer
fonte
Uma maneira simples:
1. inclui script
index.html
2. declarar
my.component.ts
3. use
fonte
Por favor, siga estes passos simples. Funcionou para mim. Vamos começar com um novo aplicativo angular 2 para evitar qualquer confusão. Estou usando o Angular cli. Portanto, instale-o se ainda não o tiver. https://cli.angular.io/
Etapa 1: criar um aplicativo demo angular 2
Você pode usar qualquer nome. Agora verifique se está funcionando executando abaixo do cmd (agora, verifique se está apontando para 'jquery-demo' se não usar o comando cd)
você verá "o aplicativo funciona!" no navegador.
Etapa 2: Instalar o Bower (um gerenciador de pacotes para a web)
Execute este comando no cli (certifique-se de que está apontando para 'jquery-demo' se não usar o comando cd):
Agora, após a instalação bem-sucedida do bower, crie um arquivo 'bower.json' usando o comando abaixo:
Ele solicitará entradas, basta pressionar enter para todos, se você quiser valores padrão e, no final, digite "Yes" quando perguntar "Parece bom?"
Agora você pode ver um novo arquivo (bower.json) na pasta "jquery-demo". Você pode encontrar mais informações em https://bower.io/
Etapa 3: Instalar o jquery
Execute este comando
Ele criará uma nova pasta (bower_components) que conterá a pasta de instalação do jquery. Agora você tem o jquery instalado na pasta 'bower_components'.
Etapa 4: adicione o local do jquery no arquivo 'angular-cli.json'
Abra o arquivo 'angular-cli.json' (presente na pasta 'jquery-demo') e adicione o local da jquery em "scripts". Isso parecerá assim:
Etapa 5: escreva código jquery simples para teste
Abra o arquivo 'app.component.html' e adicione uma linha de código simples. O arquivo terá a seguinte aparência:
Agora abra o arquivo 'app.component.ts' e adicione a declaração e código da variável jquery para a tag 'p'. Você também deve usar o gancho de ciclo de vida ngAfterViewInit (). Após fazer as alterações, o arquivo ficará assim:
Agora execute seu aplicativo angular 2 usando o comando 'ng serve' e teste-o. Deveria funcionar.
fonte
$("p").click(function(){ $(this).hide(); });
" melhor exemplo de quando não usar jQuery no Angular ?!npm install jquery --save
, em seguida"scripts":["../node_modules/jquery/dist/jquery.js"]
,import $ from 'jquery';
em arquivos * .ts. Qual é a vantagem do uso de caramanchão?npm install bower
rendeu:npm WARN deprecated [email protected]:
( stackoverflow.com/a/31219726/3806701 )Você pode implementar o gancho do ciclo de vida ngAfterViewInit () para adicionar algumas manipulações DOM
Cuidado ao usar o roteador, pois angular2 pode reciclar visualizações. Portanto, você deve ter certeza de que as manipulações dos elementos DOM são feitas apenas na primeira chamada de afterViewInit. (Você pode usar variáveis booleanas estáticas para fazer isso)
fonte
Property 'domElement' does not exist on type ElementRef
Eu faço isso de maneira mais simples - primeiro instale o jquery pelo npm no console:
npm install jquery -S
e depois no arquivo componente eu apenas escrevo:let $ = require('.../jquery.min.js')
e funciona! Aqui exemplo completo de alguns dos meus códigos:No teplate eu tenho, por exemplo:
EDITAR
Como alternativa, em vez de usar:
usar
e no seu index.html coloque:
Isso inicializará o jquery apenas uma vez globalmente - isso é importante, por exemplo, para o uso de janelas modais no bootstrap ...
fonte
console.log({ conatiner : this.container});
corrigi-lo paraconsole.log({ container: this.container});
etapa 1: use o comando: npm install jquery --save
Etapa 2: você pode simplesmente importar angular como:
importar $ de 'jquery';
Isso é tudo .
Um exemplo seria:
fonte
// instalando o jquery
npm install jquery --save
// instalando a definição de tipo para o jquery
typings install dt~jquery --global --save
// adicionando a biblioteca jquery ao arquivo de configuração de compilação, conforme especificado (no arquivo "angular-cli-build.js")
// execute a construção para adicionar a biblioteca jquery na construção
ng build
// adicionando a configuração do caminho relativo (em system-config.js)
/** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };
// importa a biblioteca jquery no seu arquivo componente
abaixo está o trecho de código do meu componente de amostra
fonte
Se você usa angular-cli, pode fazer:
Instale a dependência :
npm install jquery --save
npm install @ types / jquery --save-dev
Importe o arquivo :
Adicione "../node_modules/jquery/dist/jquery.min.js" à seção "script" no arquivo .angular-cli.json
Declarar jquery :
Adicione "$" à seção "types" do tsconfig.app.json
Você pode encontrar mais detalhes sobre o documento oficial do angular cli
fonte
Para usar o Jquery no Angular2 (4)
Siga estes ajustes
instale a definição de tipo Jquery e Juqry
Para instalação do Jquery
npm install jquery --save
Para instalação da definição de tipo Jquery
npm install @types/jquery --save-dev
e então simplesmente importe o jquery
fonte
Usando o Angular Cli
Em angular.json, na matriz de scripts
Agora, para usar o jQuery, tudo o que você precisa fazer é importá-lo da seguinte maneira em qualquer componente que você deseja usar o jQuery.
Por exemplo, importando e usando jQuery no componente raiz
fonte
Como sou burra, pensei que seria bom ter algum código funcionando.
Além disso, a versão de tipografia Angular2 do transferidor angular tem problemas com o jQuery
$
, portanto, a resposta mais aceita não me fornece uma compilação limpa.Aqui estão as etapas que eu tenho para trabalhar:
index.html
Por dentro do my.component.ts
fonte
Apenas escreva
depois de todas as seções de importação, você pode usar o jQuery e incluir a biblioteca jQuery na sua página index.html
funcionou para mim
fonte
1) Para acessar o DOM no componente.
Você pode incluir o jQuery da seguinte maneira. 2) Inclua seu arquivo jquery em index.html antes do carregamento do angular2
Você pode usar o Jquery da seguinte maneira: Aqui estou usando o seletor de datas do JQuery Ui.
Este trabalho para mim.
fonte
Estou ignorando a instalação do jquery, pois esse ponto foi mencionado em todas as postagens criadas antes da minha. Então, você já instalou o jquery. Importando t para seu componente como este
funcionará, mas há outra maneira "angular" de fazer isso criando um serviço.
Etapa no. 1: crie o arquivo jquery.service.ts .
Degrau. não. 2: registre o serviço em app.module.ts
Etapa no. 3: injete o serviço no seu componente my-super-duper.component.ts
Ficarei muito grato se alguém puder explicar os prós e os contras dos dois métodos: DI jquery como um serviço vs. import * como $ from 'jquery';
fonte
A maneira mais eficaz que encontrei é usar setTimeout com tempo 0 dentro do construtor de página / componente. Isso permite que o jQuery seja executado no próximo ciclo de execução depois que o Angular terminar de carregar todos os componentes filhos. Alguns outros métodos de componentes podem ser usados, mas tudo o que tentei funciona melhor quando executado dentro de um setTimeout.
fonte
ngOnInit()
mais do que issosetTimeout
realmente não funciona realmente se você tiver muitos itens*ngFor
para renderizar o acabamento.Aqui está o que funcionou para mim - Angular 2 com webpack
Tentei declarar
$
como tipo,any
mas sempre que tentei usar qualquer módulo JQuery que estava recebendo (por exemplo)$(..).datepicker()
não é uma funçãoComo eu incluí o Jquery no meu arquivo vendor.ts, simplesmente o importei para o meu componente usando
import * as $ from 'jquery';
Agora posso usar plugins Jquery (como bootstrap-datetimepicker) agora
fonte
Você também pode tentar importá-lo com o "InjectionToken". Conforme descrito aqui: Use jQuery em Angular / Typescript sem uma definição de tipo
Você pode simplesmente injetar a instância global do jQuery e usá-la. Para isso, você não precisará de definições ou tipos de tipo.
Quando definido corretamente em seu app.module.ts:
Você pode começar a usá-lo em seus componentes:
fonte
Instalação da Biblioteca Global como documentação oficial aqui
Instale a partir do npm:
npm install jquery --save
Adicione os arquivos de script necessários aos scripts:
"scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],
Reinicie o servidor se você estiver executando, e ele deve estar funcionando no seu aplicativo.
Se você deseja usar dentro de um único componente, use
import $ from 'jquery';
dentro de seu componentefonte
Outros já postaram. mas dou um exemplo simples aqui para ajudar alguns novos participantes.
Etapa 1: no arquivo index.html, referência jquery cdn
Etapa 2: suponha que queremos mostrar div ou ocultar div ao clicar em um botão:
Etapa 3: no arquivo de componente abaixo, a importação declara $ como abaixo:
do que criar uma função como abaixo:
Ele funcionará com as mais recentes Angular e JQuery
fonte
Primeiro, instale o jQuery usando o npm da seguinte maneira:
Segundo, vá para o arquivo ./angular-cli.json na raiz da pasta do seu projeto Angular CLI e encontre a propriedade scripts: [] e inclua o caminho para o jQuery da seguinte maneira:
Agora, para usar o jQuery, tudo o que você precisa fazer é importá-lo em qualquer componente que você deseja usar o jQuery.
Dê uma olhada no código abaixo que usa o jQuery para animar div ao clicar, especialmente na segunda linha. Estamos importando tudo como $ do jQuery.
fonte
Instalar jquery
Terminal $
npm install jquery
(Para inicialização 4 ...)
Terminal $
npm install popper.js
Terminal $
npm install bootstrap
Em seguida, adicione a
import
declaração aapp.module.ts
.(Para inicialização 4 ...)
Agora você não precisará mais de
<SCRIPT>
tags para fazer referência ao JavaScript.(Qualquer CSS que você deseja usar ainda precisa ser mencionado
styles.css
)fonte
Ao usar o Angular, tente não usar a biblioteca jquery. Tente usar os recursos e as bibliotecas que são produzidas para a estrutura angular. Se você quiser usar as funções jquery como find () , html () , closest () e etc.), sugiro usar os js puros. exemplo: querySelector () , innerHTML , parentElement e etc ...
fonte