【问题标题】:date pipe error - Cannot read property 'toLowerCase' of undefined' when upgraded to Angular 11日期管道错误 - 升级到 Angular 11 时无法读取未定义的属性“toLowerCase”
【发布时间】:2021-02-26 19:33:15
【问题描述】:

我将 Angular 应用从 v10 升级到 v11。

它使用一些标准(非自定义)管道 - 日期、货币、大写等。

日期和货币现在给我错误。例如:

core.js:5980 ERROR Error: InvalidPipeArgument: 'Cannot read property 'toLowerCase' of undefined' for pipe 'DatePipe'

我只是像以前一样为 std 管道导入 CommonModule:

import { CommonModule } from '@angular/common';

【问题讨论】:

  • 您能否提供实现该管道的组件的 ts 和 html 代码?没有它很难说。
  • 在我的模板中:日期:{{今天| date }},在我的 TS 中:今天 = Date();在 Angular 10 中工作正常,现在所有使用语言环境的管道都给出了这个错误。其他喜欢大写的工作正常。
  • 如果我没记错的话,所有标准管道都是BrowserModule 的一部分。
  • 我在将 Angular 版本从 8.2 升级到 9 时遇到了同样的问题,有关于这个问题的消息吗?
  • 对于测试,检查import TranslateTestingModule 是否存在也是值得的

标签: angular date pipe currency


【解决方案1】:

我的问题是我的 app.module.ts 中有这个:

{
    provide: LOCALE_ID,
    useFactory: (translate: TranslateService) => {
        switch (translate.currentLang) {
            case "en":
            case "en_GB":
                registerLocaleData(localeEN)
                break;
            case "es":
            case "es_ES":
                registerLocaleData(localeES)
                break;
            default:
                registerLocaleData(localeEN)
                break;
        }
        return translate.currentLang;
    },
    deps: [TranslateService]
},

但是 return translate.currentLang;undefined 并且返回 undefined 是导致此错误的原因。所以改成return translate.currentLang != undefined ? translate.currentLang : "en";就解决了问题。

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多