javascript angular index.html中的条件脚本

n8ghc7c1  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(155)

我有一个角项目,index.html是应用程序的主要入口点,就像其他角项目一样,它包含链接。
正如您在下面的html中所看到的,有一个插值,它是来自环境配置的${environment.code}
google标签管理器id的值应该是${environment.code}的值,这对于开发、过渡和生产是不同的。
问题是environment.code无法在index.html中访问(尝试了不同的方法)
有没有办法修改index.html或者至少修改google标签管理器的id值来适应不同的环境?谢谢,

索引.html代码

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="Cache-Control" content="max-age=0, must-revalidate"/>
  <meta http-equiv="Pragma" content="no-cache"/>
  <meta http-equiv="Expires" content="0" />
  <title>m</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="sec-validation" content="d1343a3ae51-8f7b-4038-bfc8-c56565485456547a4d">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link rel="preconnect" href="https://fonts.gstatic.com">  
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">  
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id=${environment.code}'+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer',environment.code);</script>
  <!-- End Google Tag Manager -->
</head>

<body class="mat-typography dx-viewport">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${environment.code}"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
  <app-root></app-root>
</body>
</html>

main.ts代码

从“@angular/core”导入{启用生产模式};从“@angular/平台浏览器动态”导入{平台浏览器动态};

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

环境代码

export const environment = {
  production: false,
  appName: 'My App',
  code: 'AGRTSRS-GMSDS'
};
5n0oy7gb

5n0oy7gb1#

不能在index.html中使用env文件,但可以为每个环境提供单独的索引文件:

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

您可以编写schematics来提取env数据和修补index.html,但这似乎太复杂了。
另一种方法是使用多个JSON配置文件,您可以将这些文件导入到env文件中,也可以使用适当的JSON文件编写构建后脚本来修补index.html。

相关问题