我已经正确实现了APP_INITIALIZER,即国家/地区对象,但我有很多其他对象列表,我不想在app.module.ts提供程序部分添加多行。
app模块相关部分
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
AppLoadService
providers: [
AppLoadService,
{
provide: APP_INITIALIZER,
useFactory: (appLoadService: AppLoadService) =>
() => appLoadService.initializeApp(),
deps: [AppLoadService],
multi: true
},
我已经尝试使initializeApp返回虚拟Promise(并添加了更多initMethods),但是从要加载到缓存的国家/地区停止了。
如果我将initializeApp更改为:
public countries: Country[] = [];
constructor(private http: HttpClient) { }
initializeApp(): Promise<Country[]> {
return this.http.get<Country[]>(`${this.url}`)
.do(result => {
this.countries = result;
}).toPromise();
}
getCountries(): Country[] {
return this.countries;
}
在initApplicationLists中,我正在推介国家/地区列表和其他人, 整个逻辑停止了工作。
知道如何实现这个目标吗?