Alo momento sono riuscito a trovare una soluzione accettabile creando una unica APP_INIZIALIZER conu una sola funzione che richiama il tutto.
Ecco il codice:
codice:
//---------------------------------------------------------------------------------------------------------------
/**
* Funzione che concatena il caricamento del file JSON con le altre api
*
* @param configService
* @returns
*/
export function inizioApp(configService: AppConfigService) {
return () => new Observable((subscriber) => {
configService.caricaJSON().pipe(
map(valore => {
AppConfigService.settings = <IAppConfig>valore;
return valore;
}),
concatMap(() => {
const apinConf$ = apiConfigurazione(configService);
const apiLng$ = apiLingue(configService);
const apiContattiRuoli$ = apiContattiRuoli(configService);
const apiContattiStati$ = apiContattiStati(configService);
const apiTipiIndirizzi$ = apiTipiIndirizzi(configService);
const apiTipiRecapiti$ = apiTipiRecapiti(configService);
const apiTraduzioni$ = apiTraduzioni(configService);
return combineLatest([apinConf$, apiLng$, apiContattiRuoli$, apiContattiStati$, apiTipiIndirizzi$, apiTipiRecapiti$, apiTraduzioni$]);
})
).subscribe({
next: () => {
subscriber.complete();
},
error: () => { },
complete: () => { }
});
});
}
Questo è solo il codice della funzione, il resto del codice è il solito di tutti gli esempi e manuali.
Qui creo il primo Observable e nel concatMap creo gli n altri Observable che con combineLatest vengono eseguiti in parallelo, ma solo dopo che il primo (caricaJSON) ha terminato il suo lavoro. Funziona alla grande, ma ditemi voi se ci sono problemi che non ho notato per ora.