0
votes

Ajout dynamique d'un script à <head> dans Angular

J'ai vérifié un exemple qui montre comment ajouter un script avec une URL dynamiquement dans Angular

Mais je veux ajouter ce genre de choses à <head>

  <noscript>something</noscript>
      

ou

<script>
  !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
  n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
  document,'script','https://connect.facebook.net/en_US/fbevents.js');

  fbq('init', '<FB_PIXEL_ID>');
  fbq('track', "PageView");
</script>
  
  

ou les deux.

Des idées, des exemples?


3 commentaires

Vous ne pouvez pas l'ajouter dans l' index.html ?


Est-ce que cela répond à votre question? Ajout d'un script de script dinamicaly à <head> dans Angular


@StPaulis non, je l'obtiens à partir d'une API


3 Réponses :


-2
votes

voici mon exemple que j'utilise réellement dans mon projet:

<head>
    <div *ngIf="dati">
        <title>{{dati.data.field_meta_tag.description}}</title>
    </div>
</head>

pour ce faire, vous devez utiliser l'opérateur rjxs et prendre la réponse à votre api, dans mon exemple, je ne l'utilise que pour le titre maintenant, mais vous pouvez l'utiliser pour tous.


0 commentaires

1
votes

Vous pouvez créer une fonction qui récupère la (première) balise head du document et ajouter une balise de script créée (avec le code que vous spécifiez dans innerHTML ) avant le premier enfant de la balise head:

export function addScriptsToHead() {
  const head = document.getElementsByTagName('head')[0];

   
  const script = document.createElement('script');
  script.innerHTML = 'your code';

  head.insertBefore(script, head.firstChild);
}


0 commentaires

1
votes

Vous pouvez simplement obtenir la référence d'un élément en utilisant la méthode getElementByTagName() en passant le nom de la balise. Après cela, vous devez créer une variable de script, puis insérer du code dans la variable à l'aide de l'attribut innerHTML . Enfin, insérez la variable de script dans head.

Essayez le code suivant,

  const head = document.getElementsByTagName('head')[0];
  const script = document.createElement('script');
  script.innerHTML = 'your code';
  head.insertBefore(script, head.firstChild);


0 commentaires