【问题标题】:angular2 pipe not workingangular2管道不工作
【发布时间】:2016-11-07 04:29:56
【问题描述】:

我正在尝试在 angular2 中提供搜索功能。

到目前为止,我已经为此创建了自己的自定义管道,如下所示:

search.pipe.ts

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

@Pipe({
    name: 'search',
    pure: false
})
@Injectable()
export class SearchPipe implements PipeTransform {
    transform(components: any[], args: any): any {
        var val = args[0];
        if (val !== undefined) {
            var lowerEnabled = args.length > 1 ? args[1] : false;

            // filter components array, components which match and return true will be kept, false will be filtered out
            return components.filter((component) => {
                if (lowerEnabled) {
                    return (component.name.toLowerCase().indexOf(val.toLowerCase()) !== -1);
                } else {
                    return (component.name.indexOf(val) !== -1);
                }
            });
       }
       return components;
    }
}

在这样做之后,我试图在 html 中应用这个管道,如下所示:

*ngFor="let aComponent of selectedLib.componentGroups[groupCounter].components | search:searchComp:true"

它给了我以下错误:

TypeError: 无法读取未定义的属性“0”

当我不应用 pipe 时,*ngFor 会正确打印数组元素,但一旦我在 html 中应用搜索管道,就会出现上述错误。

任何输入?

【问题讨论】:

    标签: javascript typescript angular angular2-pipe


    【解决方案1】:

    RC 中的新管道采用多个参数而不是一个数组:

    transform(components: any[], searchComponent: any, caseInsensitive: boolean): any {
        if (searchComponent !== undefined) {
            // filter components array, components which match and return true will be kept, false will be filtered out
            return components.filter((component) => {
                if (caseInsensitive) {
                    return (component.name.toLowerCase().indexOf(searchComponent.toLowerCase()) !== -1);
                } else {
                    return (component.name.indexOf(searchComponent) !== -1);
                }
            });
       }
       return components;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-28
      • 2017-07-02
      • 2015-10-28
      • 2018-01-01
      • 2016-12-24
      • 2017-11-10
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多