Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Injetar Tag JavaScript no Template HTML

Bom dia professor, eu já pesquisei em vários lugares na internet e não consegui encontrar nada relacionado a isso, tenho dois problemas, segue abaixo:

1- Quando eu injeto um JavaScript () no index.html ou no angular.json ele funciona apenas quando é feito o load na página, como eu faço para o JavaScript adicionado a um desses dois elementos executarem em qualquer template que for carregado, visto que o Angular trabalha com Single Page Application e não faz load na página, inclusive para templates que estão em lazy loading?

2- Existe uma forma de eu injetar JavaScript () em um template específico? Preciso que seja executado apenas para o template home por exemplo, os demais não. Tentei colocá-lo dentro do template mas pelo visto o Angular exclui esse tipo de código em tempo de execução.

PS. Gostei muito do curso de Angular, estou trabalhando com ele tudo por causa do curso e me desculpa se alguém do Fórum já fez uma pergunta parecida.

Obrigado

2 respostas
solução!

Oii Eduardo,

Qual o objetivo de adicionar este script? Você quer adicionar código javascript de uma biblioteca de terceiros? Tipo jQuery?

Pois a principio toda lógica deve estar na classe do componente, que sempre terá uma view (html). No seu caso na classe do componente de home, vc pode colocar esta lógica no ngOnInit, onde toda vez que o componente for inicializado carrega o script, ou no ngOnChanges, onde toda vez que acontecer alguma mudança no componente o código é executado também. Dá uma olhada no ciclo de vida dos componentes Angular: https://angular.io/guide/lifecycle-hooks

Acredito que no curso também é visto isto (do ciclo de vida dos componentes)

Fico no aguardo da sua resposta para entender o que vc precisa fazer com este javascript que quer inserir.

abraços

insira seu código aqui

Oi Vanessa, boa tarde, obrigado pela resposta, deixa eu tentar explicar melhor.

Eu adquiri um template pronto da internet que contém o HTML, CSS e JavaScript puro para desenvolver uma SPA, o que eu preciso fazer na teoria, incluir os CSSs e JavaScripts que o template utiliza nas páginas dentro do angular.json e os HTMLs eu vou criando componentes e interligando eles, até ai tudo bem.

O problema é que o template foi feito como um site, ele utiliza o href para abrir os arquivos.html que tem, ou seja, toda vez que o site é carregado, é incluído novamente os CSSs e JavaScripts referente aquela página.

No caso do Angular isso não irá existir, eu vou incluir os CSSs e JavaScripts no angular.json conforme falei a cima e não mais, mas, alguns componentes do HTML pronto, quando são trazidos a tela não é ativo ou aplicado nenhum JavaScript, porque a página não foi renderizada, no caso, eu precisaria utilizar algum dos ciclo de vida do Angular conforme fiz no curso.

Mas como eu faço para inserir com o TypeScript no ngOnInit uma biblioteca JavaScript que com o HTML, por exemplo, ficaria:

<script src="../../../assets/js/index.js"></script>