2017-02-01 7 views
0

ich den Fehler:Warum kann ich die indexOf-Funktion nicht in meinem eckigen 2-Typoskript-Code verwenden?

AUSNAHME: value.indexOf ist keine Funktion

wenn ich versuche, eine JavaScript-Funktion zu verwenden. Hier ist der Code:

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

@Pipe({ 
    name: 'id' 
}) 
export class IdPipe { 
    transform(value: string): string { 
     let start = value.indexOf('"id": "') 
     let id = value.substring(start + 7, start + 7 + 36); 

     return id; 
    } 
} 

Was muss ich tun, damit dies funktioniert? Ich sehe ähnliche Beispiele im Code anderer Leute, also denke ich, dass das funktionieren sollte.

+1

Können Sie den Typ zu Beginn der Prüfung Funktion? 'console.log (typeof value);' – Tholle

+0

Der Fehler bedeutet, dass der Wert von 'value' etwas ist, das keine 'indexOf'-Eigenschaft hat. Sie können vorher 'console.log (typeof value)' 'sehen, um zu sehen, was passiert. – Pointy

Antwort

2

sollen Sie erhalten in dem Anfang der Transformationsfunktion einfügen

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

@Pipe({ 
    name: 'id' 
}) 
export class IdPipe { 
    transform(value: string): string { 
     if(value !== null && value !== undefined){ 
      let start = value.indexOf('"id": "') 
      let id = value.substring(start + 7, start + 7 + 36); 

      return id; 
     }  
    } 
} 
0

Ihr Rohr mehrfach ausgeführt werden. Einige dieser Zeiten, wie wenn Ihre Komponente noch nicht vollständig initialisiert wurde, wird "Wert" null oder möglicherweise undefined, und dann wird es nicht die indexOf Methode haben. Deshalb erhalten Sie diesen Fehler.

eine Sicherheitsprüfung hinzufügen: (. Ich kann es im Allgemeinen bevorzugt, finden früh zurück, aber Yoav Schniederman Antwort ist perfekt auch gültig)

transform(value: string): string { 
    if (!value) return value; 

    let start = value.indexOf('"id": "') 
    let id = value.substring(start + 7, start + 7 + 36); 

    return id; 
} 

Verwandte Themen