2017-02-01 6 views
0

私はエラーを取得する:角2のタイスクリプトコードでindexOf関数を使用できないのはなぜですか?

EXCEPTION:私はjavascriptの機能を使用しようとするたびvalue.indexOfは機能

ではありません。コードは次のとおりです。

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; 
    } 
} 

これを行うには何が必要ですか?私は他の人のコードでも同様の例を見るので、これはうまくいくはずです。

+1

あなたは開始時の種類を確認することができます関数? 'console.log(typeof value);' – Tholle

+0

エラーは 'value'の値が' indexOf'プロパティを持たないものであることを意味します。その前に 'console.log(typeof value)'を使って何が起こっているのか見ることができます。 – Pointy

答えて

2

あなたはあなたのパイプが複数回実行される変換関数の初め

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

に条件を挿入する必要があります。これらの時間の一部は、コンポーネントがまだ完全に初期化されていない場合のように、nullまたはおそらくundefinedになり、indexOfメソッドはありません。そのため、このエラーが発生しています。

安全チェックを追加します。

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

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

    return id; 
} 

(私は一般的には望ましい早く返すように見つけることが、ヨアフSchniedermanの答えは同様に完全に有効です。)

関連する問題