angular - 日期管道错误-升级到 Angular 11 时无法读取未定义的属性 'toLowerCase'

标签 angular date pipe currency

我将我的 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';

最佳答案

我的问题是我的 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"; 解决了这个问题。

关于angular - 日期管道错误-升级到 Angular 11 时无法读取未定义的属性 'toLowerCase',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66391797/

相关文章:

jquery - SystemJS:加载 jQuery

angular - 为什么 Angular 9 必须预编译自己的代码?

java - 日期时区在查找位置 "America/Punta_Arenas"的 ID 时遇到问题

sql - Impala 中的 OVERLAPS 函数

c++ - 调用 fdopen() 后出现 Errno 22

c++ - 阻塞读取管道的调用

c++ - 使用管道 : FIFOs overfilling 在 C++ 中创建调度队列/线程处理程序

angular - 在 Docker 中构建 Angular 项目 - 特定于环境

angular - routerLinkActive问题

SQL获取最新记录