2017-08-12 13 views
0

私はを追加する必要がありますPipeTransformそのオブジェクトの配列の部分文字列のserach。私はフィルターが名前であるときlodashを使用していますそれはうまくいくと魅力のように動作します。しかし、名前のプロパティを別のものに変更すると、のタイトルのようになります。そのリターン:lodash filter returnヌルの 'indexOf'プロパティを読み取ることができません

Cannot read property 'indexOf' of null

私のパイプコード:

import * as _ from 'lodash'; 
import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'dataFilterTitle' 
}) 
export class DataFilterPipeByTitle implements PipeTransform { 

    transform(array: any[], query: string): any { 
     debugger; 
     if (query) { 
      return _.filter(array, row=>row.title.indexOf(query) > -1); 
     } 
     return array; 
    } 
} 

エラー:

ERROR TypeError: Cannot read property 'indexOf' of null 
at datafilterpipebyTitle.ts?071a*:12 
at arrayFilter (lodash.js:603) 
at Function.filter (lodash.js:9190) 
at DataFilterPipeByTitle.webpackHotUpdate.../../../../../src/app/plugins/datatable/datafilterpipebyTitle.ts.DataFilterPipeByTitle.transform (datafilterpipebyTitle.ts?071a*:12) 
at checkAndUpdatePureExpressionInline (core.es5.js:11350) 
at checkAndUpdateNodeInline (core.es5.js:12244) 
at checkAndUpdateNode (core.es5.js:12177) 
at debugCheckAndUpdateNode (core.es5.js:12880) 
at debugCheckDirectivesFn (core.es5.js:12821) 
at Object.eval [as updateDirectives] (ListComponent.html:17) 
+0

あなたのアレイオブジェクトを投稿できますか? – CruelEngine

答えて

1

エラーは明らかにはそのtitleプロパティを意味ヌルのプロパティ 'のindexOf' を読み込めませんと述べています場合によってはnullとなります。だからindexOfチェックの前にtitleが存在するかどうか。

transform(array: any[], query: string): any { 
    if (query) { 
     return _.filter(array, row=> row.title && row.title.indexOf(query) > -1); 
    } 
    return array; 
} 
+0

OWW、ありがとう。私の責任です! –

関連する問題