Пользовательский канал для фильтрации списка из двух дат в угловых 5 - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть собственный канал для фильтрации списка по дате, и он работает без аргументов

<tr *ngFor="let account of  accounts | customRangeFilter">

@Pipe({
  name: 'customRangeFilter'
})
export class CustomRangeFilterPipe implements PipeTransform {

  transform(value, arg1?:Date, arg2?:any,) {
    if(!arg1 || !arg2){

    return value;

    }else{
      let startDate = new Date(arg1);
      let endDate = new Date(arg2);
      let a = value.filter(
        m => new Date(m.date) >= startDate && new Date(m.date) <= endDate
      )
      return a;
    }

  }
}

Я хочу, чтобы он работал с 2 аргументами для фильтрации, но, помещая аргументы, я получаю эту ошибку

  <tr *ngFor="let account of  accounts | customRangeFilter :'{{startDate}}':'{{endDate}}'">

        Uncaught Error: Template parse errors:
    Can't bind to '*ngFor' since it isn't a known property of 'tr'. ("
      </thead>
      <tbody>
        <tr [ERROR ->]*ngFor="let account of  accounts | customRangeFilter :'{{startDate}}':'{{endDate}}'">

Я знаю, что переменные endDate и startDate работают, потому что я получаю их данные, если я помещаю их в html, в чем проблема?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Проблема в том, как вы передали параметр в пользовательский канал.Так что просто удалите интерполяцию и напрямую передайте параметр.

<tr *ngFor="let account of accounts | customRangeFilter:'startDate':'endDate'">
0 голосов
/ 20 декабря 2018

Ваша проблема связана с тем, как вы указали свои параметры.Снимите скобки выражения с ваших параметров и сделайте так:

<tr *ngFor="let account of accounts | customRangeFilter :'startDate':'endDate'">

...