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

6
在我的Angular 6应用程序中,我正在尝试使用i18n-iso-countries库(JavaScript)将国家代码转换为国家名称。我使用npm进行安装。
``` npm -i i18n-iso-countries ```
然后在我的组件中,我像这样导入它:
``` import * as i18IsoCountries from 'i18n-iso-countries'; ```
我正在这样使用它:
  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中创建了类似的设置。您可以看到getName的输出为undefined,但getAlpha2Codes()的输出返回值。


你如何创建一个包含所有国家和代码的列表?可以作为键值对,甚至不必首先作为对象。 - CptDayDreamer
2个回答

12
我刚刚发现语言需要注册。文档有点令人困惑。如果您在Node.js中使用i18n-iso-countries,那么就完成了。但是,您确实需要注册要使用的语言。
因此,在Angular 6中,您需要:
1. 运行命令 `npm install i18n-iso-countries --save`; 2. 在组件中加载模块:`import * as i18nIsoCountries from 'i18n-iso-countries';`; 3. 在 `ngOnInit()` 方法中调用以下代码:`i18nIsoCountries.registerLocale(require("i18n-iso-countries/langs/en.json"));`

5

i18n-iso-countries/langs/ar.json => 对于阿拉伯语不起作用。始终为未定义。 - Vineesh TP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接