注入服务以填充environment.ts文件中的值

时间:2018-06-29 09:11:12

标签: angular typescript

我有一个angular服务(clientAppSettings.service.ts)。它从作为json文件(appsettings.json)的后端获取配置值。

我需要注入角度服务,以填写environment.ts文件中的值。因此,instrumentaionKey应该从服务(clientAppSettings.service.ts)中检索。任何指导表示赞赏。

这是environmen.ts文件:

export const environment = {
  production: false,
  appInsights: {
    instrumentationKey: 'some-key'
  } 
};

角度服务:clientAppSettings.service.ts

@Injectable()
export class ClientAppSettingService {
  appUrl: string = "";
  constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
    this.appUrl = baseUrl;
  }
  getConfig() {
    return this.http.get<ClientAppSettings>(this.appUrl + 'api/ClientAppSettings');
  }
}

后端控制器:

namespace WebApp.Controllers
{
    [Route("api/[controller]")]
    public class ClientAppSettingsController : Controller
    {
        private readonly AppSettings _clientAppSettings;

        public ClientAppSettingsController(IOptions<AppSettings> appSettings)
        {
            _clientAppSettings = appSettings.Value;
        }

        [HttpGet("[action]")]
        public AppSettings Get()
        {
            return _clientAppSettings;
        }
    }
}

appsetting.json

{
"AppConfig": {
        "ApplicationInsights": {
            "InstrumentationKey": "some-key"
        }
}

2 个答案:

答案 0 :(得分:3)

您无法在运行时更新env文件,它在构建时会大量使用。只需将设置保存在服务中,然后从那里拉出它们即可。

答案 1 :(得分:1)

我不认为您可以按照您的说明(https://github.com/angular/angular-cli/issues/2508)进行操作。环境文件用于为特定环境设置一些固定变量。

如果您想通过应用程序从后端存储数据,则可以使用保存数据的共享服务。