Я использую import { Adal8Service, Adal8HTTPService } from 'adal-angular8';
для Azure аутентификации. Я использую ниже в app.module.ts
:
export function appInit(appConfigService: AppInitService) {
return (): any => {
appConfigService.getApplicationConfig().subscribe((res) =>{
sessionStorage.setItem("appConfig",JSON.stringify(res));
timeout(500);
});
}
}
мой getApplicationConfig () ниже:
public getApplicationConfig() {
return this.http.get('assets/config.json');}
и в providers []
ниже:
AuthenticationService,
AppInitService,
{
provide: APP_INITIALIZER,
useFactory: appInit,
deps: [AppInitService],
multi: true
},
Adal8Service,
{ provide: Adal8HTTPService,
useFactory: Adal8HTTPService.factory,
deps: [HttpClient, Adal8Service],
multi: true
},
Здесь функция appInit
не блокирует (даже удаляя таймаут ()) загрузку приложения и переходит к this.adalService.init(this.adalConfig);
this.adalService.handleWindowCallback();
(где this.adalConfig = sessionStorage.getItem("appConfig")
).
Если я обновлю sh страница, затем я правильно перенаправляюсь на страницу входа в систему Azure Ad, или если я жестко кодирую configOptions
из this.adalService.init("HARDOCDE all values")
, тогда все работает нормально. Как заставить приложение блокировать конфигурацию. Я сохраняю значения конфигурации в /assets/config.json
. Я не уверен, что я здесь делаю не так. Я попытался прочитать файл «json», но снова мне нужно изменить его, прежде чем приступить к производству. Как заставить приложение ждать, есть также другие значения конфигурации для приложения, хранящиеся в файле /assets/config.json
. Правильно ли я использую APP_INITIALIZER? Пожалуйста, укажите мне правильное направление.