Angular2管道过滤器的最佳命名方式

蒂亚戈·马托斯(Tiago Matos)

尽管我的解决方案运行良好,但我想知道在我的情况下在Angular2中使用PIPE的最佳方法是什么。

让我们开始吧。
我有这个json数组https://jsonplaceholder.typicode.com/users

我的PIPE

transform(value: any, name: any): any
{
    if (value == null) {
        return null;
    }

    if (name == null) {
        return value;
    }

    return value.filter(user => {
        return user.name.indexOf(name) != -1
    });
}

首先,当value为null时,我返回null,因为我是根据此无法Angular 2中读取null的属性'filter'来从API获取数据的

if (value == null) {
    return null;
}

其次,我返回null,因为我要先获取原始数据而不进行过滤。

if (name == null) {
    return value;
}

最后,我根据用户在输入中输入的内容过滤ngFor内部的结果。

user.name.indexOf(name) != -1

输入以过滤数据

<input type="text" [(ngModel)]="userSearch">

我的ngFor

<div class="list-item" *ngFor="let user of (usersList | filterPipe:userSearch)">
    <div><strong>Name:</strong> {{ user.name }}</div>
    <div><strong>Username:</strong> {{ user.username }}</div>
    <div><strong>Email:</strong> {{ user.email }}</div>
    <hr>
</div>

那么,你们怎么看?

布山·加德卡(Bhushan Gadekar)

valueis时,无需返回null undefined:在管道中,您可以执行以下操作:

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

@Pipe({
    name: 'search',
    pure: false
})
@Injectable()
export class SearchPipe implements PipeTransform {
    transform(value: any[], name: any, caseInsensitive: boolean): any {
        if (name !== undefined) {
            // filter users, users which match and return true will be kept, false will be filtered out
            return users.filter((user) => {
                if (caseInsensitive) {
                    return (user.name.toLowerCase().indexOf(name.toLowerCase()) !== -1);
                } else {
                    return (user.name.indexOf(name) !== -1);
                }
            });
        }
        return users;
    }
}

至于你的问题,如果valueundefined,你可以围绕你的*ngFor一个div具有*ngIf价值,所以,当这将只呈现userListundefined

<div *ngIf="usersList">
    <div class="list-item" *ngFor="let user of (usersList | search:userSearch:true)">  
        <!-- true is added for case insensitive search -->
        <div><strong>Name:</strong> {{ user.name }}</div>
        <div><strong>Username:</strong> {{ user.username }}</div>
        <div><strong>Email:</strong> {{ user.email }}</div>
    <hr>
    </div>
</div>

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

分层和管道过滤器

来自分类Dev

Angular 2管道/过滤器,组件变量

来自分类Dev

AngularJS2在管道过滤器后丢失绑定

来自分类Dev

Angular2在服务内部应用过滤器

来自分类Dev

Angular2过滤器问题

来自分类Dev

如何在Angular2中实现“类别过滤器”

来自分类Dev

基于过滤器RxJS的不同管道

来自分类Dev

Powershell过滤器在管道中被忽略

来自分类Dev

在Angular 8中创建过滤器管道

来自分类Dev

React Bootstrap Table 2以编程方式选择过滤器

来自分类Dev

分层和管道和过滤器

来自分类Dev

最佳Pig过滤器子句顺序

来自分类Dev

Powershell管道过滤器

来自分类Dev

Angular 2管道/过滤器,组件变量

来自分类Dev

angular2使用管道不区分大小写的过滤器?

来自分类Dev

http的angular2过滤器/地图结果进入变量

来自分类Dev

输入上的Angular2过滤器管道

来自分类Dev

在Angular2中,如何检测到过滤器/管道未返回任何结果

来自分类Dev

使用自定义管道基于两个输入的Angular2过滤器表

来自分类Dev

Angular2:使用文本过滤器管道过滤数组时出错

来自分类Dev

我的自定义管道(过滤器)在Angular 2中不起作用

来自分类Dev

如何在RxJS或Angular2中的Observables中放置订阅过滤器?

来自分类Dev

Angular 中的过滤器

来自分类Dev

Angular2 过滤器/管道使用单选按钮进行过滤

来自分类Dev

angular2 - 剑道过滤器不起作用

来自分类Dev

如何在 angular2 中创建独特的过滤器过滤器组件

来自分类Dev

Angular2 Kendo 在过滤器更改后获取或读取网格结果

来自分类Dev

Django 过滤器:寻找最佳实践

来自分类Dev

Angular 8 多搜索过滤器(管道)不工作