Angular CLI 在命令中传递环境变量

Ham*_*deh 4 node.js angular-cli angular

ng build使用 Angular cli 命令(例如,特别是在我的情况下更改或设置环境中的变量)时,有什么方法可以传递一些参数,ng serve而无需每次更改环境文件或定义新环境?

例如我有这个environment.ts文件

    export const environment = {
     apiData: true,
     authentication: true,
     checkValidation: true,
     signData: false,
     mockFileDirectoryUrl: '/assets/',
     saveUrl: 'http://localhost:5000/'
     getUrl: 'http://localhost:5005/'
    };
Run Code Online (Sandbox Code Playgroud)

我想在本地运行我的应用程序以使用signData=true标志进行测试,并SaveUrl使用以下命令进行不同的测试:ng serve signData true saveUrl "https:/localhost:5050"

我找到了这种方法How to passenvironmentvariables at build time in an Angular application using .env files,但问题是每次环境文件被完全重写时这个解决方案,但我想在运行时传递这些变量。

Kla*_*r_1 5

查看@ngx-env/builder,它公开了如下环境变量:

NG_APP_ENABLE_ANALYTICS=false
NG_APP_VERSION=$npm_package_version
NG_APP_COMMIT=$GITHUB_SHA
Run Code Online (Sandbox Code Playgroud)

作为全局变量:

@Component({
  selector: "app-footer",
})
export class FooterComponent {
  version = process.env.NG_APP_VERSION;
  branch = process.env.NG_APP_BRANCH_NAME;
  commit = process.env.NG_APP_COMMIT;
  analyticsFlag = process.env.NG_APP_ENABLE_ANALYTICS;
}
Run Code Online (Sandbox Code Playgroud)

并通过管道:

<!-- Same output in the spans -->
<span> {{ 'process.env.NG_APP_BRANCH_NAME' | env }} </span>
<span> {{ 'NG_APP_BRANCH_NAME' | env }} </span>
<span> {{ branch }} </span>
Run Code Online (Sandbox Code Playgroud)

示例由项目自述文件提供。