14

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

错误

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

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

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

4

3 回答 3

18

似乎你没有更新你的管道,因为角度 5 的破坏性变化参见:https ://github.com/angular/angular/blob/master/CHANGELOG.md

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

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

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

    你应该改变你的日期管道

    在此处输入图像描述

您还需要在 app.module 中提供您的语言,如下所示:

在此处输入图像描述

于 2017-11-13T12:03:40.087 回答
8

我更新了 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>
...
于 2019-11-29T09:55:09.250 回答
3

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

import '@angular/common/locales/global/ru';
于 2020-10-13T11:04:14.797 回答