Я наткнулся на LOCATION_INITIALIZED
при исследовании загрузки переводов ngx-translate в APP_INITIALIZER
(см. введите описание ссылки здесь
import { Injector, APP_INITIALIZER } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { LOCATION_INITIALIZED } from '@angular/common';
export function appInitializerFactory(translate: TranslateService, injector: Injector) {
return () => new Promise<any>((resolve: any) => {
const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
locationInitialized.then(() => {
const langToSet = 'en-GB'
translate.setDefaultLang('en-US');
translate.use(langToSet).subscribe(() => {
console.info(`Successfully initialized '${langToSet}' language.'`);
}, err => {
console.error(`Problem with '${langToSet}' language initialization.'`);
}, () => {
resolve(null);
});
});
});
}
Согласно исходному коду angular это когда в моем случае браузер (платформа) готов (DOM, Location и History готовы, я бы предположил).
К сожалению, это нигде не документировано.
Я использовал приведенный выше пример без LOCATION_INITIALIZED
, и он работал как положено.
Так почему я должен заботиться о LOCATION_INITIALIZED
и когда мне его использовать?