Angular 将脚本动态添加到<;头>;棱角分明

Angular 将脚本动态添加到<;头>;棱角分明,angular,typescript,Angular,Typescript,我已经检查了一些示例,演示了如何在Angular中动态添加带有URL的脚本 但是我想在 !函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod? n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n; n、 push=n;n.load=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=

我已经检查了一些示例,演示了如何在Angular中动态添加带有URL的脚本

但是我想在


!函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod?
n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n;
n、 push=n;n.load=!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)}(窗口,
文档,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init','');
fbq(“轨迹”、“页面视图”);

什么 或者两者兼而有之


有什么想法和例子吗?

这里是我在项目中实际使用的例子:

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

{{dati.data.field_meta_tag.description}

为此,您需要使用rjxs运算符并将响应带到您的api,在我的示例中,我现在仅将其用于标题,但您可以将其用于所有标题。

您可以创建一个函数,该函数从文档中获取(第一个)头标记,并添加一个创建的脚本标记(使用您在
innerHTML
中指定的代码)在头标记的第一个子项之前:

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

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

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

您只需通过传递标记名,使用
getElementByTagName()
方法获取元素的引用即可。之后,您必须创建一个脚本变量,然后使用
innerHTML
属性向该变量插入代码。最后将脚本变量插入head

请尝试以下代码

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

如果您允许自己安装一个新库,请使用
@bespunky/angular zen
附带的
HeadService
。它提供了对head元素的安全且强类型的访问

您的组件/服务如下所示:

从'@angular/core'导入{Component,OnInit};
从'@bespunky/angular-zen/core'导入{HeadService};
@组成部分({
选择器:“zen head service demo”,
templateUrl:'./head service demo.component.html',
样式URL:['./头服务demo.component.css']
})
导出类HeadServiceDemoComponent实现OnInit
{
构造函数(私有头:HeadService){}
恩戈尼尼特()
{
this.head.addElement('script',/*配置对象或配置函数*/);
}
}
||


您不能将其添加到
index.html
中吗?这是否回答了您的问题@不,我是从API得到的
export function addScriptsToHead() {
  const head = document.getElementsByTagName('head')[0];

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

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