如何从angular应用程序中访问Angular CLI'ng start'命令行变量

克林特

角度11

我知道已经问过这个问题,但找不到满意的答案。

在角度Cli中,我想运行命令

ng serve -o  --client=someclient

在component.ts文件或service.ts文件中,因此我想访问客户端变量

if (client){
    this.loadClientConfig(client);
} else {
    this.loadClientConfig('whitelabel');
}

loadClientConfig(c){
    // go load the client config section from a config.json file if it exists (this bit i know how to do)
}

我知道可以通过添加--configuration = someClient来完成,但据我所知,我需要为每个客户端向angular.json文件和新的environment.ts文件中添加一个新的配置部分,但我没有想要这样做。

有没有办法做到这一点?

谢谢。

克林特

如果有人需要知道,请回答我自己的问题。

有四个步骤可以达到这个目的;-

第1步。在package.json中添加/编辑脚本(示例为ng serve,但可以是构建等)

"start":"node set-tenant.js --tenant=somevalue && ng serve -o" 

步骤2.在根目录中创建set-tenant.js文件

console.info('Attempting to set  "tenant" variable in index.html');
let tenant = null;
const indexHtml = 'src/index.html';
process.argv.forEach(a => {
  if (a.startsWith('--tenant')){
    tenant = a.split('=')[1];
  }
});
const fs = require('fs')
fs.readFile( indexHtml, 'utf8', function (err, data) {
  if (err){ return console.error(err); }
  if (data.length){
    console.info('Setting  "tenant" variable in index.html to ' + tenant);
    const matchRule = /\/\*tenant-start\*\/.*\/\*tenant-end\*\//g;
    fs.writeFile( indexHtml, data.replace( matchRule, `/*tenant-start*/window['tenantId'] = '${tenant}';/*tenant-end*/`), 'utf8', function (err) {
        if (err) return console.error(err);
    });
  } else {
    return console.error(indexHtml + ' has no content');
  }
});

步骤3.将代码添加到index.html文件

<script>/*tenant-start*/window['tenantId'] = 'gtr';/*tenant-end*/</script>

步骤4.访问TS组件和服务文件中的承租人变量

// tslint:disable-next-line: no-string-literal
this.tenant = window['tenantId'];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

像 Angular Cli 这样的命令行

用于angular-cli应用程序的Dockerfile返回ng:找不到命令

如何配置和ember-cli应用程序而不是使用命令行选项

如何使用angular-cli ng build命令创建的/ dist文件夹文件来创建可以自己运行的应用程序?

在Angular 2 Cli应用程序中ng生成后,刷新显示404错误

Bash脚本运行dotnet命令行应用程序,将'作为cli参数

管道中的命令行bash变量

在命令行中定义变量

在变量中准备命令行参数

命令行变量中的空格

命令行中的嵌套嵌套变量

命令行(@ angular / cli)未安装在angular 6中

如何使用angular-cli将构建时环境变量添加到应用程序中?

如何通过命令行安装Java JAR库,以及如何通过cli编译程序?

在 ruby 中运行命令行命令,使用 ruby 变量

angular-cli ng 命令给出“意外令牌 =”

在Mac OS上找不到Angular CLI ng命令

Git bash不能运行任何ng命令(Angular CLI)

ng build之后的angular-cli run命令

Angular CLI'ng'无法识别为有效命令

ng -v命令未提供Angular CLI详细信息

angular-cli 已安装,但无法识别 ng 命令

如何从命令行中的任何地方(如Angular ng)启动节点脚本?

在Android Build中访问Gradle命令行-P变量

如何使用纱线离线标志使用 ng 命令创建新的 angular 应用程序?

如何将参数传递给在CLI(命令行界面)中运行的docker?

CLI 功能:如何在同一命令行中运行多个标志

如何在命令行中取消设置变量?

如何使用redis-cli从命令行进行身份验证?