2017-12-19 5 views
0

habe ich implementiert den folgenden Filter/Rohr ersten Brief an Kapital zu schlagen, in module.ts importiert usw.Angular 4-Rohr kann nicht Eigentum 'toLowerCase' undefinierter

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(' '); 
    } 
} 

Alles Arbeit Ordnung, außer, wenn ich es in diesem Ausdruck verwenden, erhalte ich - nicht Eigentum ‚toLowerCase‘ lesen kann undefinierter

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

handhaben, so Rohr ausgeführt wird, bevor die Daten angekommen sind, so 'undefined' – Alex

+0

ist es eine Möglichkeit, es zu beheben? – AlexFF1

+0

versuche unreines Rohr anstelle von reinem Rohr zu verwenden ... benutze 'pure: false' –

Antwort

1

ein null-Add/undefined Check in Ihrer Pfeife zu überprüfen, ob die Zeichenfolge vor dem Aufruf .toLowerCase

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

Vielen Dank Sajeetharan !!! Es woks jetzt, ich habe gelernt wie auch! – AlexFF1

+0

hallo sajeetharan .....! können Sie bitte zu diesem Link gehen .... https: //stackoverflow.com/questions/48804782/unable-to-filter-the-data-in-the-matselect-accessed-using-the-http-get-in -angu .... sogar ich habe den gleichen Fehler ...... – Heena

0

Rohr ausführen initialy als null null ist, da dies async ist. u müssen, um die dies async undefined Variable

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