app.module.ts> APP_INITIALIZER зависит от другого - PullRequest
0 голосов
/ 20 мая 2019

Мне нужен APP_INITIALIZER для получения данных из предыдущей услуги APP_INITIALIZER.В этом случае установить язык.

У меня есть предыдущий инициализатор, который загружает

export function configLoaderFactory(provider: ConfigLoaderService) {
    return () => provider.load();
}

export function settingsLoaderFactory(provider: SettingsLoaderService) {
    return () => provider.load();
}

export function translateHttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/');
}

@NgModule({
    declarations: [WpaComponent],
    imports: [
        BrowserModule,
        IonicModule.forRoot({
            mode: 'ios',
            rippleEffect: false,
            statusTap: false
        }),
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: translateHttpLoaderFactory,
                deps: [HttpClient]
            }
        }),
        IonicStorageModule.forRoot(),
        FormsModule,
        ReactiveFormsModule,
        MbscModule,
        WpaDirectivesModule
    ],
    providers: [
        AppInjector,
        StatusBar,
        SplashScreen,
        AppVersion,

        Keyboard,

        {provide: RouteReuseStrategy, useClass: IonicRouteStrategy},


        ConfigLoaderService,
        {provide: APP_INITIALIZER, useFactory: configLoaderFactory, deps: [ConfigLoaderService, AppVersion], multi: true},

        SettingsLoaderService,
        {provide: APP_INITIALIZER, useFactory: settingsLoaderFactory, deps: [SettingsLoaderService, StorageService], multi: true},


        {
            provide: APP_INITIALIZER,
            useFactory: (translate: TranslateService, config: ConfigLoaderService) => {
                return () => {
 console.log(`config.getConfig()-> `, config.getConfig()); // This yields null because it is not loaded yet

    /*              if (config.getConfig().force_language) {

                        translate.setDefaultLang(config.getConfig().force_language_locale);
                        translate.use(config.getConfig().force_language_locale);

                    }


                };
            },
            multi: true,
            deps: [TranslateService, ConfigLoaderService]
        },

        AuthGuardService,
        ApiService
    ], exports: [
        BrowserModule,
        IonicModule,
        FormsModule,
        MbscModule,
        ReactiveFormsModule,
        HttpClientModule,
        IonicStorageModule,
        WpaDirectivesModule,
        TranslateModule
    ]
})

Я не могу получить доступ к ConfigLoaderService.

Есть ли способ либо поэтапно загрузить, либо дождаться загрузки файла (это небольшой файл json) в ConfigLoaderService?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...