TypeError:无法读取属性&to toLocaleLowerCase'未定义的

时间:2017-06-20 19:07:29

标签: javascript angular typescript angular-pipe

我正在尝试创建一个自定义管道,我已正确地按照说明操作但是当我尝试过滤列表时它一直给我错误

这是我的管道代码

Storage storage;
switch (storageType) {
    case "list":
        storage = new StorageList();
        break;
    case "map":
        storage = new StorageMap();
        break;
    case "db":
        storage = new StorageDB();
        break;
    default:
        throw new UnsupportedStorageTypeException();
}

这是我的界面

import { Pipe, PipeTransform } from '@angular/core';
import { Icandidat } from './candidat/icandidat';

@Pipe({
    name :'personFilter'
})

export class PipeFilter implements PipeTransform{


    transform(value: Icandidat[], filterBy : string) : Icandidat[] {
        filterBy = filterBy ? filterBy.toLocaleLowerCase(): null;
        return filterBy? value.filter((person : Icandidat)=>
            person.candidatNom.toLocaleLowerCase().indexOf(filterBy) ! ==-1) : value; 
     }
}

我的组件

export interface Icandidat {
    prog1 : string ;
    progName1 : string ;
    progEl1 : string ;
    candInfo : any [];
    filterBy : string ;

    candidatID : number;
    candidatNom : string;
    canditatPrenom : string ;
    candidatParti : string;
    candidatDepartement : string;
    candidatCommune : string ;

    candidats : Icandidat;
    errorMessage : string;


}

和我的模板

import { PaeServiceService } from '../pae-service.service';
import { Icandidat } from './icandidat';
import { NgModel } from '@angular/forms/src/directives';
import { Component, OnInit } from '@angular/core';


@Component({
  selector: 'app-candidat',
  templateUrl: './candidat.component.html',
  styleUrls: ['./candidat.component.css'],
  providers : [PaeServiceService]
})
export class CandidatComponent implements OnInit {
    prog1 : string ="Programme d'Appui aux Elections";
    progName1 : string ="Enquête sur les candidats";
    progEl1 : string ="Listes des candidats ciblés";
    candInfo : any [];
    filterBy : string ="Ronny";

    candidatID : number;
    candidatNom : string;
    canditatPrenom : string ;
    candidatParti : string;
    candidatDepartement : string;
    candidatCommune : string ;

    candidats : Icandidat;
    errorMessage : string;

    constructor (private _candidatService : PaeServiceService){

    }

    ngOnInit(): void {
      this._candidatService.getCandidatInfo()
            .subscribe(candidats => this.candInfo = candidats,
            error => this.errorMessage = <any>error);
    }


}

知道造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

此处的间距可能是问题所在:

.indexOf(filterBy) ! ==-1)

应该是:

.indexOf(filterBy) !== -1)

请注意,bang和double equals之间没有空格。