How to edit environment variables without rebuild in Angular 6?

前端 未结 1 1515
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-06 04:23

I usually set my API URLs in environment.ts file. I have to deploy the same build to multiple clients with different API URLs. Currently I am taking separate builds

1条回答
  •  北恋
    北恋 (楼主)
    2021-02-06 04:28

    I researched this issue and this is my solution without using environment.ts

    I defined global settings in json file. Because if we defined in ts file, if build in production mode it is not easy to find constants to change value.

    export class SettingService  {
    
      constructor(private http: HttpClient) {
    
      }
    
    
    
    public getJSON(file): Observable {
          return this.http.get("./assets/configs/" + file + ".json");
      }
      public getSetting(){
          // use setting here
      }
    }
    

    In app folder, i add folder configs/setting.json

    Content in setting.json

    {
        "baseUrl": "http://localhost:52555"
    }
    

    In app module add APP_INITIALIZER

     {
          provide: APP_INITIALIZER,
          useFactory: (setting: SettingService) => function() {return setting.getSetting()},
          deps: [SettingService],
          multi: true
        }
    

    with this way, I can change baseUrl value in json file easier.

    0 讨论(0)
提交回复
热议问题