为了账号安全,请及时绑定邮箱和手机立即绑定

如何将过滤器应用于*ngFor?

如何将过滤器应用于*ngFor?

如何将过滤器应用于*ngFor?显然,Range2将使用管道而不是过滤器(如Angular 1中的过滤器)与ng一起过滤结果,尽管实现似乎仍然是模糊的,没有明确的文档。也就是说,我想要达到的目标可以从以下的角度来看<div *ng-for="#item of itemsList" *ng-if="conditon(item)"></div>如何使用管道来实现?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

基本上,您可以编写一个管道,然后在*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 { }

这是一个柱塞它演示了使用自定义过滤管和内置片管来限制结果。

请注意(正如几位评论员所指出的)有一个原因为什么没有内置的过滤管道的角度。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 1412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信