Angular 正在读取主目录中的配置文件
我见过一些类似的问题,但我不知道该怎么做。我有一个config.json文件,我想在应用程序启动之前读取该文件。我已经创建了一个配置服务,但我不知道如何在main.ts(不同于类的结构)中调用它 配置服务类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
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当前位置这正是我们需要避免的。客户要求我们使用相同的构建进行测试和实时部署。。。使用环境变量意味着我们需要进行另一次构建。。。直到现在我才找到正确的答案,但我会继续寻找。