angular - 如何判断 Angular 6 App 是否处于 Angular 项目之外的生产模式

标签 angular google-analytics

我有一些 Angular 项目之外的 Google Analytics 代码。如果环境是生产环境,我只想包括它。

我知道 Angular 项目内部有一个环境变量,您可以在 typescript 中像这样引用...

if (environment.production) {
  // do stuff
}

如果 Angular 之外有一些静态代码,那也无济于事。我尝试将 Google 分析代码放入 Angular 中,但这似乎存在未找到范围的问题,而且 typescript 不喜欢它。

现在我最好的解决方案是手动检查主机名,这可能不是最好的解决方案(这是在 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 配置来处理环境变量。

也许有一种方法可以从 vanilla javascript 中的“getAllAngularRootElements()”之类的东西获取环境,但我还没有找到方法。

最佳答案

目前对我来说最干净的解决方案是使用第二个 index.html 文件,例如 index.prod.html,并用它替换原来的一个在构建过程中通过使用 "production" 环境配置中的 "fileReplacements" 属性在 angular.json 中。

在这里查看:https://github.com/angular/angular-cli/wiki/stories-application-environments

UDPATE for angular 8+

构建时,"fileReplacements" 将无法替换 index.html - 请改用 "index":

"index": {
  "input": "src/index.prod.html",
  "output": "index.html"
},

更多信息在这里:https://github.com/angular/angular-cli/issues/14599

关于angular - 如何判断 Angular 6 App 是否处于 Angular 项目之外的生产模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378889/

相关文章:

javascript - JSON 对象的 Typescript 模型类

node.js - 如何连接到 Angular ,nodejs http ://localhost:4200 in google chrome

javascript - Angular 与 IBM Northstar

google-analytics - 分析 API : How to define a segment by using event category AND event action

google-analytics - 在 Google Analytics 中组合内容数据

angular - 重用自定义指令在 Angular Bootstrap 中制作可排序表

angular - 如何在 ng2-charts 中使用插件?

google-analytics - 尝试移动Google Analytics(分析)媒体资源时出现权限被拒绝错误

google-analytics - 扁平化 Google Analytics 数据(带有重复字段)不再起作用

javascript - 将变量作为字符串参数传递给 gaq.push