Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2 pipe 输入搜索筛选器在angular2上不工作_Angular2 Pipe - Fatal编程技术网

Angular2 pipe 输入搜索筛选器在angular2上不工作

Angular2 pipe 输入搜索筛选器在angular2上不工作,angular2-pipe,Angular2 Pipe,我面临以下错误: EXCEPTION: Error in ./UserComponent class UserComponent - inline template:217:14 caused by: Cannot read property 'toLowerCase' of undefined 它只是一个带有搜索输入页面的用户列表。 模板如下所示: <tr *ngFor="let user of users | sUser: TxtSearch"> <

我面临以下错误:

EXCEPTION: Error in ./UserComponent class UserComponent - inline template:217:14 caused by: Cannot read property 'toLowerCase' of undefined
它只是一个带有搜索输入页面的用户列表。 模板如下所示:

<tr *ngFor="let user of users | sUser: TxtSearch">
            <td>{{user.userid}}</td>
            <td>{{user.username}}</td>
            <td>{{user.email}}</td>
            <td>{{user.fullname}}</td>
            <td>
              <button class="btn btn-warning btn-circle-sm" (click)="showEditUser(i, user._id,user)"><span class="glyphicon glyphicon-edit"></span></button>
            </td>
            <td>
              <button class="btn btn-danger btn-circle-sm" (click)="showRemoveUser(user._id, user.username)"><span class="glyphicon glyphicon-remove"></span></button>
            </td>
          </tr>
管道/过滤器声明位于app.module中

管道中的toLowerCase()函数有什么问题?我需要进口别的东西吗? 有什么想法吗

多谢各位


/Koul

更改转换函数并将传递值类型修改为“any[]”。希望能有帮助

 transform(value: any[], args?: any): any {
    if(args === undefined || args === '') 
     return value;
   return value.filter(function(val){
       return val.username.toLowerCase().includes(args.toLowerCase());
     });
   }

如果您实际读取了错误,您就会知道
val.username
未定义的
。因此,在尝试调用
toLowerCase()
之前,只需对其进行检查即可。您还可以为
args
添加安全检查:

  transform(value: any[], args?: any): any[] {

    if(args === undefined || args === '') return value;

    return value.filter(function(val) {

      if (!val.username || !args) return false;

      return val.username.toLowerCase().includes(args.toLowerCase());
    });
  }

出于某种原因,它可以在不改变一行代码的情况下工作。我怎么不知道!!
 transform(value: any[], args?: any): any {
    if(args === undefined || args === '') 
     return value;
   return value.filter(function(val){
       return val.username.toLowerCase().includes(args.toLowerCase());
     });
   }
  transform(value: any[], args?: any): any[] {

    if(args === undefined || args === '') return value;

    return value.filter(function(val) {

      if (!val.username || !args) return false;

      return val.username.toLowerCase().includes(args.toLowerCase());
    });
  }