源参数Angular 8 Pipe上始终未定义的嵌套NGF中的过滤器
我用的是角度8 我有一个过滤器,让我给它的源参数的值未定义,我不明白为什么,因为我总是可以可视化过滤器认为未定义的元素。 我有以下过滤器:源参数Angular 8 Pipe上始终未定义的嵌套NGF中的过滤器,angular,filter,Angular,Filter,我用的是角度8 我有一个过滤器,让我给它的源参数的值未定义,我不明白为什么,因为我总是可以可视化过滤器认为未定义的元素。 我有以下过滤器: filter(source :string, target :string, method:Method) : boolean { console.log("filter"); console.log(source, target, method); switch(method) { case "includes" :
filter(source :string, target :string, method:Method) : boolean {
console.log("filter");
console.log(source, target, method);
switch(method) {
case "includes" : return source.includes(target)
case "equal" : return source === target
case "not-equal" : return source !== target
}
}
}
type Method ="includes" | "equal" | "not-equal"
下面是html,如果我根本不应用过滤器,我可以很好地看到所有元素:
<div *ngFor="let cat of filteredArray | filter : 'cat.category' : selectedCategory : 'equal'" >
<mat-tab *ngFor="let errlist of cat.errors" label="{{errlist.letter}}">
<div class="tab-content ">
<ul class="errorUL ">
<li *ngFor="let item of errlist.errorList " >
{{item.id}} - {{item.description}}
</li>
</ul>
</div>
-
{{item.id}-{{item.description}
那么我在这里遗漏了什么?这不是过滤器的工作方式吗?过滤器的声明看起来非常混乱。我想您使用的是Angular和typescript,而不是AngularJs,因此您必须使用管道而不是过滤器 如果您仍然使用AngularJS和过滤器,那么您的过滤器声明和使用在很多方面都是错误的。请看一看。简言之:
- 您不会使用类似于
。正如我所记得的,您使用声明此筛选器的关键字。不幸的是,我没有看到像过滤器:“类别”这样的过滤器
这样的声明,您可以在教程中找到app.filter('makeUppercase',function(){
- AngularJS方法属性中没有类型
- 你必须告诉AngularJS你想要到达这个过滤器的名字
- 我看不出
和源
属性应该从哪里获得它们的值selectedCategory
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter',
pure: false
})
export class FilterPipe implements PipeTransform {
transform(items: any, property: any, term: any): any {
if (!term) {
return items;
}
const result = items.filter(function (item) {
if (item[property] === null) {
return items;
}
if (item[property].toString().toLowerCase().includes(term.toLowerCase())) {
return true;
}
return false;
});
if (result.length === 0) {
return [-1];
}
return result;
}
}
我写错了,用cat.category而不是category 这是正确的方法:
<div *ngFor="let cat of filteredArray | filter : 'category' : selectedCategory : 'equal'">
我使用的是带有自定义管道的angular 8是