1

将值传递给我的管道过滤器时遇到问题。我需要从我的组件中以名为 pagex 的变量的形式传递一个参数值,但我找不到使它工作的语法……或者我遗漏了一些东西。谢谢您的帮助。

我的组件

export class ItemsComponent { 
    items:any[]
    pagex:number;

constructor(private ItemService:ItemService){
    this.ItemService.getItems()
    .subscribe(items =>{
        this.items=items;
        this.pagex=2;
    });
}

以下手动传递值有效:

<div *ngFor="let item of items| myfilter: '2'">

而这并没有,已经尝试了很多组合......

<div *ngFor="let item of items| myfilter: {{pagex}}">
<div *ngFor="let item of items| myfilter: '{{pagex}}'">
<div *ngFor="let item of items| myfilter: {{pagex.toString()}}">
<div *ngFor="let item of items| myfilter: pagex>
<div *ngFor="let item of items| myfilter:'pagex'>

我的管道

@Pipe({
    name: 'myfilter',
})
export class MyFilterPipe implements PipeTransform {
    transform(items: any[], args: any[]): any {
        if(items!=undefined){

        console.log(args[0])
        var maxItems = 5;
           var start_index= (args[0]*maxItems)-maxItems-1;
           var end_index= args[0]*maxItems;
    return items.filter((item, index) => (index > start_index) && (index <end_index));
    }
}

}

4

2 回答 2

1

您在过滤器输入的类型中犯了错误。

过滤器的参数必须是数字类型,而不是任何[]

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

@Pipe({
    name:'myFilter'
})

export class myFilter implements PipeTransform{

    transform(inputDate:string,integerValue:number):string{
      console.log(integerValue);

      return integerValue.toString();             
    }
}

我不知道过滤器到底在做什么,也没有实施服务。所以我尝试了这种方式。你可以检查下面的 plunker

现场演示

于 2017-01-11T17:04:42.490 回答
-1

编辑。试试这个,似乎你错过了:' '

<div *ngFor="let item of items| myfilter: '{{pagex}}'">
于 2017-01-11T16:34:03.180 回答