angular:LOCATION_INITIALIZED它是什么,为什么要使用它?

问题描述 投票:8回答:1

[在研究在LOCATION_INITIALIZED中加载ngx-translate的翻译时,我偶然发现了APP_INITIALIZER(请参阅enter link description here

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's source code,在我的情况下,浏览器(平台)已准备就绪(DOM,位置和历史记录已准备就绪,这是我的猜测)。

不幸的是,它在任何地方都没有记录。

我在没有LOCATION_INITIALIZED的情况下使用了上面的示例,并且按预期方式工作。

所以我为什么要关心LOCATION_INITIALIZED,什么时候应该使用它?

angular
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.