如何在Angular 6中使用i18n-iso-countries

时间:2018-10-01 23:17:47

标签: angular

在Angualr 6应用程序中,我试图使用i18n-iso-countries库(JavaScript)将国家/地区代码转换为国家/地区名称。 我使用npm

安装了它
  

npm -i i18n-iso-countries

然后在我的组件中按如下所示导入它:

  

从'i18n-iso-countries'导入*作为i18IsoCountries;

我正在这样使用它:

  let valueName = '';
  tmpArr = tmpArr.map((e) => {
      const tmp = e.split('_')[1];
      console.log('tmp: ' + tmp);
      // console.log(i18IsoCountries);
      valueName = i18IsoCountries.getName(tmp, 'en');
      return tmp;
    }

但是valueName是未定义的。

我还在Stackblitz here.中创建了类似的设置 您可以看到getName的输出未定义,但是getAlpha2Codes()的输出返回值。

2 个答案:

答案 0 :(得分:2)

缺少导入区域设置文件。 i18nIsoCountries.registerLocale(require(“ i18n-iso-countries / langs / en.json”));

Stackblitz https://stackblitz.com/edit/angular-qbmbwq

答案 1 :(得分:2)

我刚发现语言需要注册。该文档有点混乱

  

如果将i18n-iso-countries与Node.js一起使用,则操作完成。

但是您要做需要注册要使用的语言。

因此在Angular 6中,您需要:

  

npm install i18n-iso-countries --save

然后在您的组件中:

import * as i18nIsoCountries from 'i18n-iso-countries';

然后在ngOnInit()

i18nIsoCountries.registerLocale(require("i18n-iso-countries/langs/en.json"));