缺少语言环境 "ru" Angular 5 的语言环境数据

Missing locale data for the locale "ru" Angular 5

我将 Angular 更新到版本 5 并收到此错误

在我看来,这一行中的管道错误

<h5>{{ event.date | date:"yyyy.MM.dd"}}</h5>.

有人知道如何解决这个问题吗?

自从 angular 5 的重大变更后,您似乎没有更新您的管道 参见:https://github.com/angular/angular/blob/master/CHANGELOG.md

  • 默认情况下 Angular 现在只包含该语言的区域设置数据 en-US,如果您将 LOCALE_ID 的值设置为另一个语言环境,您将 必须为此语言导入新的语言环境数据,因为我们不使用 国际 API 了。
  • 所有 i18n 管道现在都有一个额外的最后一个参数区域设置,它允许您使用特定的区域设置而不是令牌中定义的区域设置 LOCALE_ID(其默认值为 en-US)。
  • 预定义格式(short、shortTime、shortDate、medium,...)现在使用 CLDR 给出的模式(就像在 AngularJS 中一样),而不是来自国际 API。您可能会注意到一些变化,例如对于 en-US,shortDate 将是 8/15/17 而不是 8/15/2017。

  • eras 的窄版现在是 GGGGG 而不是 G,格式 G 现在类似于 GG 和 GGG。

  • months 的缩略版现在是 MMMMM 而不是 L,L 格式现在是 months 的短独立版。
  • 星期的缩略版现在是 EEEEE 而不是 E,格式 E 现在类似于 EE 和 EEE。
  • 时区 z 现在将回退到 O 并输出 GMT+1 而不是完整的时区名称(例如太平洋标准时间),这是因为在所有现有的语言环境太大。
  • 时区 Z 现在将输出 ISO8601 基本格式,例如+0100,您现在应该使用 ZZZZ 获取 GMT+01:00。

    你应该改变你的日期管道

Also you need to provide your language in app.module like this:

我更新了 app.mudule.ts 以本地化日期。

// app.mudule.ts

...
import { NgModule, LOCALE_ID } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeRu from '@angular/common/locales/ru';

registerLocaleData(localeRu);

@NgModule({
  ...
  providers: [
    ...
    { provide: LOCALE_ID, useValue: 'ru' }
  ],
  bootstrap: [AppComponent]
})

// feed-list-item.component.html (nothing was updated here)

...
<span>{{ event.date | date:'fullDate'}}</span>
...

快速修复:为您的语言环境添加导入。对于 'ru',您应该在 app.module 中添加以下行:

import '@angular/common/locales/global/ru';