Angular 4 pipe无法读取属性&to toLowerCase'未定义的

时间:2017-12-19 10:50:54

标签: angular filter pipe

我已经实现了以下过滤器/管道来大写首字母,在module.ts等中导入。

pipe.ts

import { Pipe, PipeTransform } from '@angular/core';


@Pipe({name: 'capitalize'})
export class CapitalizePipe implements PipeTransform {

   transform(str:any) {

     var splitStr = str.toLowerCase().split(' ');
    for (var i = 0; i < splitStr.length; i++) {

        splitStr[i] = splitStr[i].charAt(0).toUpperCase() + 
        splitStr[i].substring(1);     
    }
    // Directly return the joined string
    return splitStr.join(' '); 
   }
 }

一切正常,除非我在这个表达式中使用它,我得到 - 无法读取属性&to to ofCowerCase&#39;未定义的

 {{messageItem?.cc && messageItem?.cc[0]?.name | capitalize}}

2 个答案:

答案 0 :(得分:2)

在管道中添加null / undefined检查以在调用.toLowerCase之前检查字符串是否为空

if (str === undefined) return [];

答案 1 :(得分:0)

管道执行初始化为null,因为这是异步的。你需要处理undefined变量

var splitStr = str.toLowerCase().split(' ') || []