Привязать переменную компонента к фильтру трубы
У меня проблема при передаче значений в мой фильтр трубы. Мне нужно передать значение аргумента в виде переменной с именем pagex из моего компонента, и я не могу найти синтаксис, чтобы заставить его работать... или я что-то упустил. Спасибо за помощь.
MyComponent
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'>
mypipe
@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));
}
}
}
2 ответа
Решение
Вы ошиблись в типе входных данных фильтра.
Параметры фильтра должны быть числового типа, а не любых [ ]
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();
}
}
Я не знаю, что именно делает фильтр, и не реализовано ни одного сервиса. Вот и я попробовал так. Вы можете проверить поршень ниже
РЕДАКТИРОВАТЬ. Попробуйте, кажется, вам не хватает: ' '
<div *ngFor="let item of items| myfilter: '{{pagex}}'">