Angular 自定义管道 returns 错误 table 数据
Angular custom pipes returns error with table data
component.html:
<input
type="text"
[(ngModel)]="searchText"
placeholder="search your products here"
name="searchText">
<table class="table table-bordered">
<thead>
<tr>
<th>Id</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let obj of product| filter: searchText">
<td>{{obj.id}}</td>
<td>{{obj.description}}</td>
</tr>
</tbody>
</table>
filter.ts:
transform(items: any, searchText: string): any[] {
if (!items || !searchText || searchText === undefined) {
return items;
}
return items.filter(items =>
items.description.toLowerCase().includes(searchText.toLowerCase));
}
控制台显示 items.description 未定义。
model.ts:
export class products{
id: number;
description: string;
}
在页面加载之前没有错误,一旦我开始在搜索框中输入,错误是 displayed.Error 如下代码所示。
<input
type="text"
[(ngModel)]="searchText"
placeholder="search your issues here"
name="searchText">
你不是在这里打电话给 searchText.toLowerCase
。你需要打电话给它。此外,您将输入和每个项目命名为 items
。这可能是另一个问题。
将您的 transform
实现更改为:
transform(items: any, searchText: string): any[] {
if (!items || !searchText || searchText === undefined) {
return items;
}
return items.filter(item =>
item.description.toLowerCase().includes(searchText.toLowerCase()));
}
当然,除非是您的 OP 中的拼写错误。
这里有一个Sample StackBlitz供您参考。
component.html:
<input
type="text"
[(ngModel)]="searchText"
placeholder="search your products here"
name="searchText">
<table class="table table-bordered">
<thead>
<tr>
<th>Id</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let obj of product| filter: searchText">
<td>{{obj.id}}</td>
<td>{{obj.description}}</td>
</tr>
</tbody>
</table>
filter.ts:
transform(items: any, searchText: string): any[] {
if (!items || !searchText || searchText === undefined) {
return items;
}
return items.filter(items =>
items.description.toLowerCase().includes(searchText.toLowerCase));
}
控制台显示 items.description 未定义。
model.ts:
export class products{
id: number;
description: string;
}
在页面加载之前没有错误,一旦我开始在搜索框中输入,错误是 displayed.Error 如下代码所示。
<input
type="text"
[(ngModel)]="searchText"
placeholder="search your issues here"
name="searchText">
你不是在这里打电话给 searchText.toLowerCase
。你需要打电话给它。此外,您将输入和每个项目命名为 items
。这可能是另一个问题。
将您的 transform
实现更改为:
transform(items: any, searchText: string): any[] {
if (!items || !searchText || searchText === undefined) {
return items;
}
return items.filter(item =>
item.description.toLowerCase().includes(searchText.toLowerCase()));
}
当然,除非是您的 OP 中的拼写错误。
这里有一个Sample StackBlitz供您参考。