我有一些不在Angular项目中的Google Analytics(分析)代码。如果环境是生产环境,我只想包含它。
我知道Angular项目中有一个环境变量 ,您可以在打字稿中引用这样的内容...
if (environment.production) {
// do stuff
}
如果Angular之外有一些静态代码,那将无济于事。我曾尝试将Google Analytics(分析)代码放到Angular中,但似乎找不到范围,而打字稿不喜欢它。
现在,我拥有的最佳解决方案是手动检查可能不是最佳解决方案的主机名(这是在angular应用之外的index.html中)...
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-00000000-0"></script>
<script>
if(location.hostname === "productionurl.com") {
// insert google analytics tracking code
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-000000000-0');
}
</script>
我习惯于使用简单的web.config文件,但该项目改用angular config处理环境变量。
也许有一种方法可以从香草javascript中从“ getAllAngularRootElements()”之类的东西获取环境,但是我还没有找到一种方法。
答案 0 :(得分:2)
对我来说,目前最干净的解决方案是使用第二个index.html
文件,例如index.prod.html
,并在构建过程中使用{{1}替换原来的文件。 } "fileReplacements"
内的"production"
环境配置中的}属性。
在这里检查:https://github.com/angular/angular-cli/wiki/stories-application-environments
答案 1 :(得分:0)
您是否尝试通过Angulartics(https://github.com/angulartics/angulartics)设置Google Analytics(分析)?我认为那应该可以解决您的问题。