使用我的过滤器(通过字段搜索过滤实体的行),会出现此问题:ERROR TypeError: "value.toLowerCase is not a function"
。我不知道为什么以及如何解决它。除了ID之外,我的实体的字段是字符串,当我在.ts中注释行searchText = searchText.toLowerCase();
或者如果我在toLowerCase()
中删除return it.toLowerCase().includes(searchText);
时问题仍然存在
更新:问题发生,即使:
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): void {
}
所以我真的很想知道是否没有JHipster限制,因为它只适用于Angular作为qazxsw poi。
.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);
});
}
}
您正在迭代集合。当您使用ngFor时,它会遍历数组。我认为它是一系列实验室。
这意味着您的对象是实验室。
在您的代码中,您认为您的实验室是一个字符串:
<div class="table-responsive" *ngIf="laboratories">
<table class="table table-striped">
<thead>
<tr>
<th><span>ID</span></th>
<th><span>Name</span></th>
<th><span>Adress</span></th>
<th></th>
</tr>
</thead>
<tbody>
<tr *ngFor="let laboratory of laboratories | filter:searchText ;trackBy: trackId">
也许你应该添加一些字段来过滤?
return items.filter(it => {
return it.toLowerCase().includes(searchText);
});
另外,正如我的评论中所述:
return items.filter(it => {
return it.name.toLowerCase().includes(searchText);
});