在Angular 2应用程序中从何处读取全局设置?
我在应用程序中有全局设置,这些设置存储在本地存储中 我需要写的服务,是在加载应用程序后启动从本地存储加载设置 在哪里做在Angular 2应用程序中从何处读取全局设置?,angular,Angular,我在应用程序中有全局设置,这些设置存储在本地存储中 我需要写的服务,是在加载应用程序后启动从本地存储加载设置 在哪里做 我可以编写服务并在每个组件中调用它,但这并不方便。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以在应用程序加载时创建并调用服务一次 参见示例 您
我可以编写服务并在每个组件中调用它,但这并不方便。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以从服务构造函数中的本地存储加载设置。首次加载服务时,将加载设置。但要确保服务在整个应用程序中都是单例的。服务的使用在应用程序中共享。您可以在应用程序加载时创建并调用服务一次 参见示例 您还可以创建getter和setter方法,以便轻松访问每个组件 比如说
// import
export class AppConfigService{
public token: string;
Constructor(private http: Http){
}
get token(): string{
return this.token;
}
getAppConfig(): Promise<any> {
return this.http.get('apiBaseUrl')
.toPromise()
.then(resp => {
this.token = res.token;
}).catch(function (err: any): any {
Observable.throw(err);
});
}
}
将此添加到提供程序中
providers: [
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: loadAppConfig,
deps: [AppConfigService],
multi: true
},
]
您可以在应用程序加载时创建并调用服务一次
参见示例
您还可以创建getter和setter方法,以便轻松访问每个组件
比如说
// import
export class AppConfigService{
public token: string;
Constructor(private http: Http){
}
get token(): string{
return this.token;
}
getAppConfig(): Promise<any> {
return this.http.get('apiBaseUrl')
.toPromise()
.then(resp => {
this.token = res.token;
}).catch(function (err: any): any {
Observable.throw(err);
});
}
}
将此添加到提供程序中
providers: [
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: loadAppConfig,
deps: [AppConfigService],
multi: true
},
]
那么,我需要在每个组件中导入此服务,以及如何提供单例服务?您只需要将其添加到主模块的提供程序中-在大多数情况下,它是AppModule,在此之后,将其注入到您想要使用它的每个组件中,将只返回创建的实例,但我需要在f5硬加载页面后立即调用此服务,是否加载了它?为什么不。当您刷新时,它将再次创建组件并将服务注入itSo,然后我需要在每个组件中导入此服务,以及如何提供单一服务?您只需将其添加到主模块的提供程序中-在大多数情况下,它是AppModule,在此之后,将其注入到您想要使用它的每个组件中,将只返回创建的实例,但我需要在f5硬加载页面后立即调用此服务,是否加载了它?为什么不。当您刷新时,它将再次创建组件并将服务注入其中,但我需要在通过F5硬加载页面后立即调用此服务。我可以在NgMOdule加载此服务一次吗?我可以在NgModel的全局提供程序中插入(加载)此服务吗?检查解决方案2。可能有帮助您只需在应用程序模块中写入,但我需要在F5硬加载页面后立即调用此服务。我可以在NgMOdule中加载此服务一次吗?我可以在NgModel的全局提供程序中插入(加载)此服务吗?检查解决方案2。可能有帮助您只需在应用程序模块中编写