Angular(和JHipster)问题:value.toLowerCase不是函数

时间:2019-02-18 13:00:47

标签: angular filter pipe jhipster

使用我的过滤器(以通过字段搜索过滤实体的行)时,会发生此问题:string str+=Id.ToString() + ",";。我不知道为什么以及如何解决。我实体的字段是ID以外的字符串,并且在注释.ts中的行ERROR TypeError: "value.toLowerCase is not a function"或删除searchText = searchText.toLowerCase();中的toLowerCase()时仍然存在该问题

更新:即使使用:

,也会出现问题
return it.toLowerCase().includes(searchText);

所以,我真的很想知道是否没有JHipster限制,因为它仅适用于export class FilterPipe implements PipeTransform { transform(items: any[], searchText: string): void { } 的Angular。

.ts:

ng serve

.html:

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

@Pipe({
    name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): any[] {
    if (!items) {
        return [];
    }
    if (!searchText) {
        return items;
    }

    searchText = searchText.toLowerCase();

    return items.filter(it => {
        return it.toLowerCase().includes(searchText);
    });
}
}

1 个答案:

答案 0 :(得分:2)

您要遍历集合。使用ngFor时,它将遍历数组。我认为这是一个实验室。

这意味着您的对象是实验室。

在您的代码中,您认为实验室是一个字符串:

return items.filter(it => {
  return it.toLowerCase().includes(searchText);
});

也许您应该添加一些要过滤的字段?

return items.filter(it => {
  return it.name.toLowerCase().includes(searchText);
});

另外,如我的评论所述:

Do NOT use filtering pipes