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_INITIALIZED
,它按预期工作。
那么我为什么要关心LOCATION_INITIALIZED
它以及何时应该使用它呢?