Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 正在读取主目录中的配置文件_Angular_Bootstrapping - Fatal编程技术网

Angular 正在读取主目录中的配置文件

Angular 正在读取主目录中的配置文件,angular,bootstrapping,Angular,Bootstrapping,我见过一些类似的问题,但我不知道该怎么做。我有一个config.json文件,我想在应用程序启动之前读取该文件。我已经创建了一个配置服务,但我不知道如何在main.ts(不同于类的结构)中调用它 配置服务类 import { Http } from '@angular/http' import 'rxjs/add/operator/map'; import { Injectable } from '@angular/core'; import { EmovieCat } from '../mod

我见过一些类似的问题,但我不知道该怎么做。我有一个config.json文件,我想在应用程序启动之前读取该文件。我已经创建了一个配置服务,但我不知道如何在main.ts(不同于类的结构)中调用它

配置服务类

import { Http } from '@angular/http'
import 'rxjs/add/operator/map';
import { Injectable } from '@angular/core';
import { EmovieCat } from '../model/eMovieCategory';
import { Headers, RequestOptions } from '@angular/http';
import { ConnectionHelper } from "app/config/connections";


@Injectable()
export class ConfigurationService {

    getConfiguration() {
        return this._http.get("app/config/config.json").map(res => res.json());
    }


    constructor(private _http: Http) {

    }
}
梅因酒店

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

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

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

/*I want to do something like below,7
 but i couldnt figure how to instantiate ConfigurationService

ConfigurationService cs = new ConfigurationService();
cs.getConfiguration().subscribe(resp=>{
  //set the server config here.
  platformBrowserDynamic().bootstrapModule(AppModule);
})
*/

如果需要,请删除环境引用,并在main.ts之前使用Javascript获取API加载JSON

`fetch('assets/config.json').then(response => {
  return response.json()
})
.then(data => {
  if (data.production) {
    enableProdMode();
  }
  platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));
})
` .   

然后,您可以在APP.module.ts providers中使用APP_初始值设定项,并在加载模块之前调用您的服务方法来加载配置数据

或者,您可以使用2个环境变量。谢谢你的回答。这是一个很好的方法,但是我需要从配置文件中读取,这样当服务器位置发生变化时,我就不必重新编译了。我将只更改config.json文件@KHAN@Kay当前位置这正是我们需要避免的。客户要求我们使用相同的构建进行测试和实时部署。。。使用环境变量意味着我们需要进行另一次构建。。。直到现在我才找到正确的答案,但我会继续寻找。