Angular4应用程序初始值设定项赢得';t延迟初始化
Typescript:2.2.0 角度:4.0 我试图通过使用Angular4应用程序初始值设定项赢得';t延迟初始化,angular,configuration,initialization,angular-cli,Angular,Configuration,Initialization,Angular Cli,Typescript:2.2.0 角度:4.0 我试图通过使用APP\u初始值设定项,确保在应用程序启动之前初始化ConfigService对象。我已经找到了很多这样做的例子,但是没有一个会延迟应用程序的初始化。这里只是我尝试实现的几个示例 这是我的NgModule课程 导出函数初始化(配置:ConfigService){ return()=>{ config.load(); }; } @NGD模块({ 声明:[ 应用组件 ], 进口:[ 浏览器模块, FormsModule, HttpMo
APP\u初始值设定项
,确保在应用程序启动之前初始化ConfigService
对象。我已经找到了很多这样做的例子,但是没有一个会延迟应用程序的初始化。这里只是我尝试实现的几个示例
这是我的NgModule
课程
导出函数初始化(配置:ConfigService){
return()=>{
config.load();
};
}
@NGD模块({
声明:[
应用组件
],
进口:[
浏览器模块,
FormsModule,
HttpModule,
批准模块
],
供应商:[
{
“提供”:应用程序初始值设定项,
“useFactory”:初始化,
“deps”:[ConfigService],
“多重”:正确
},
配置服务
],
引导:[AppComponent]
})
导出类AppModule{
}
下面是ConfigService
类
@Injectable()
导出类配置服务{
私有配置:应用程序配置;
获取apiRoot(){
返回此.getProperty('apiRoot');//res.json()).toPromise();
然后(配置=>{
this.config=config;//看起来您忘记了从工厂返回值:
导出函数初始化(配置:ConfigService){
return()=>{
return config.load();//添加return
};
}
或者,同样的代码可以在短时间内编写:
导出函数初始化(配置:ConfigService){
return()=>config.load();
}
是的,就是这样!非常感谢!对于阅读本文的其他人来说,还有一个最近的错误(截至目前为止),其中有一个微妙的错误。虽然在通过config.load()确定配置加载之前,应用程序不会引导,但是在config.load()之前,您的配置服务将作为一个服务注入其他服务中完成。是的,您将ConfigService注入到的所有其他服务将被注入一个不完整/尚未加载的对象。因此,您需要非常小心应用程序的其余部分如何使用ConfigService,因为您正在处理一个尚未真正完成构建的对象。不要指望运气好/工厂订购。@goat您有什么更好的方法的例子/建议吗?@JoelDavey投票给我,所以ng团队给了我们一个解决方案。我请求了异步提供程序,但我们会看看他们做了什么。