Angular 5 Breaking change - 手动导入区域设置

dra*_*fly 38 angular

变更日志说:

默认情况下,Angular现在只包含语言en-US的语言环境数据,如果将LOCALE_ID的值设置为另一个语言环境,则必须导入此语言的新语言环境数据,因为我们不再使用intl API.

但我找不到任何参考"导入"的意思,如何做到这一点,我得到

xxx.html:30错误错误:缺少区域设置"de-CH"的区域设置数据

我配置语言环境:

import { LOCALE_ID } from '@angular/core';
Run Code Online (Sandbox Code Playgroud)

  providers: [
    { provide: LOCALE_ID, useValue: 'de-CH' }
  ],
Run Code Online (Sandbox Code Playgroud)

mic*_*ael 85

这在当前版本中很难找到:(.这是我发现的:

包中包含不同的语言环境@angular/common/locales/.在你的情况下,这是:

import localeDECH from '@angular/common/locales/de-CH';
Run Code Online (Sandbox Code Playgroud)

现在,您需要在项目中注册此区域设置定义.有一个名为的函数registerLocaleData位于:@angular/common.

所以你的代码app.module.ts应该是这样的:

import {LOCALE_ID} from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeDECH from '@angular/common/locales/de-CH';

registerLocaleData(localeDECH);

@NgModule({
...
providers: [
   { provide: LOCALE_ID, useValue: 'de-ch' },
]
...
})
....
Run Code Online (Sandbox Code Playgroud)


小智 14

对于

{ provide: LOCALE_ID, useValue: 'pt-BR' }
Run Code Online (Sandbox Code Playgroud)

使用:

import { registerLocaleData } from '@angular/common';
import localePt from '@angular/common/locales/pt';
registerLocaleData(localePt);
Run Code Online (Sandbox Code Playgroud)