在Angular 2框架呈现任何组件或服务之前,我需要来自我的json文件的一些配置数据。我没有找到任何好的工作解决方案来实现这一点。
我使用Angular 2 RC6在Angular 1的混合模式下工作,所以我使用升级适配器来执行bootstraping。
您有什么想法可以实现我的需求吗?
答案 0 :(得分:2)
在“main.ts”文件中,我使用jQuery“$ .getJSON”函数加载配置文件,在回调时我调用bootstrap函数:
declare var $: any;
declare var configFile: string;
import './polyfills.ts';
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { environment } from './environments/environment';
import { AppModule } from './app';
if (environment.production) {
enableProdMode();
this.configFile = 'assets/config.prod.json';
} else {
this.configFile = 'assets/config.json';
}
$.getJSON(this.configFile, (data) => {
environment.config = data;
platformBrowserDynamic().bootstrapModule(AppModule);
});
这样,您可以确保在配置数据完全加载后执行自举。
答案 1 :(得分:0)
查看此博客:https://www.cidean.com/blog/2019/initialize-data-before-angular-app-starts/
在应用启动和获取数据之前,它使用APP_INITIALIZER
钩住AppConfigService
。另请参见博客以了解AppConfigService
的实现。
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { AppConfigService } from './services/app-config.service';
export function appInit(appConfigService: AppConfigService) {
return () => appConfigService.load();
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),
],
providers: [AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: appInit,
multi: true,
deps: [AppConfigService]
}],
bootstrap: [AppComponent]
})
export class AppModule { }