使用APP_INITIALIZER多次加载?

时间:2018-04-10 04:38:11

标签: angular

我已经正确实现了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中,我正在推介国家/地区列表和其他人, 整个逻辑停止了工作。

知道如何实现这个目标吗?

0 个答案:

没有答案