Angular:Document.write for Google Analytics gtag.js

Angular:Document.write for Google Analytics gtag.js,angular,Angular,我需要将谷歌分析添加到我的Angular应用程序中。我想使用document.write插入脚本。我的脚本是正确的,没有问题。问题是,如果我将脚本放在main.js中,我认为它没有呈现,因为在HTML中没有脚本的迹象(在开发工具中检查),并且我得到一个javascript错误“gtag未定义”,我的main.js如下所示 为什么不渲染脚本? 我应该把它放在哪里 document.write('<script async src="https://www.googletagmana

我需要将谷歌分析添加到我的Angular应用程序中。我想使用document.write插入脚本。我的脚本是正确的,没有问题。问题是,如果我将脚本放在main.js中,我认为它没有呈现,因为在HTML中没有脚本的迹象(在开发工具中检查),并且我得到一个javascript错误“gtag未定义”,我的main.js如下所示

为什么不渲染脚本? 我应该把它放在哪里

document.write('<script async src="https://www.googletagmanager.com/gtag/js?id='+environment.googleAnalyticsKey+'"></script>');

const gaElement = `
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());


  </script>
`;
document.write( gaElement );

有什么理由不直接将其粘贴到
index.html
中吗。这个代码是静态的,应该应用到你的所有页面。我不想放在index.html中的唯一原因是因为我有谷歌键的环境变量。那么你应该能够在模板中使用
{}
来引用解析那些环境变量,让你的生活更简单。显然,如果有理由不这样做,那就顺其自然吧。另外,我建议使用普通的all
document.createElement
,如下所示[Link]
constructor( public router: Router ) {
    this.router.events.subscribe( event => {
        if (event instanceof NavigationEnd ) {
            gtag( 'config', environment.googleAnalyticsKey, {'page_path': event.urlAfterRedirects} );
        }
    } );
  }
}