gpt4 book ai didi

angular - 如何对 *ngFor 应用过滤器?

转载 作者:太空狗 更新时间:2023-10-29 16:44:08 27 4
gpt4 key购买 nike

显然,Angular 2 将使用管道而不是 Angular1 中的过滤器,并结合 ng-for 来过滤结果,尽管实现似乎仍然很模糊,没有明确的文档。

即我要实现的目标可以从以下 Angular 来看

<div *ng-for="#item of itemsList" *ng-if="conditon(item)"></div>

如何使用管道实现?

最佳答案

基本上,您编写了一个管道,然后您可以在 *ngFor 指令中使用它。

在你的组件中:

filterargs = {title: 'hello'};
items = [{title: 'hello world'}, {title: 'hello kitty'}, {title: 'foo bar'}];

在您的模板中,您可以将字符串、数字或对象传递给您的管道以用于过滤:

<li *ngFor="let item of items | myfilter:filterargs">

在你的管道中:

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

@Pipe({
name: 'myfilter',
pure: false
})
export class MyFilterPipe implements PipeTransform {
transform(items: any[], filter: Object): any {
if (!items || !filter) {
return items;
}
// filter items array, items which match and return true will be
// kept, false will be filtered out
return items.filter(item => item.title.indexOf(filter.title) !== -1);
}
}

记得在 app.module.ts 中注册你的管道;您不再需要在 @Component

中注册管道
import { MyFilterPipe } from './shared/pipes/my-filter.pipe';

@NgModule({
imports: [
..
],
declarations: [
MyFilterPipe,
],
providers: [
..
],
bootstrap: [AppComponent]
})
export class AppModule { }

Here's a Plunker它演示了使用自定义过滤器管道和内置切片管道来限制结果。

请注意(正如一些评论员指出的那样)there is a reason为什么 Angular 中没有内置的过滤管道。

关于angular - 如何对 *ngFor 应用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com