Как отфильтровать запись в таблице по столбцу даты. Я использую следующий код для фильтра, но его ошибка броска, как

ОШИБКА TypeError: Невозможно прочитать свойство indexOf со значением NULL

temp = [{ "firstName":"Ravi", "date":"2019-04-04T06:12:43.541Z", "status":"created" }, { "firstName":"Shagul", "date":"2019-04-05T06:12:43.541Z", "status":"created" }, { "firstName":"Abdul", "date":"2019-04-05T06:12:43.541Z", "status":"created" }, { "firstName":"Gani", "date":"2019-04-05T06:12:43.541Z", "status":"created" }];

public updateFilter(event) {
const temp = this.temp.filter(function (d) {
    return (
    d.firstName.toLowerCase().indexOf(val) !== -1 ||
    d.date.toLowerCase().indexOf(val) !== 1 ||
    d.status.toLowerCase().indexOf(val) !== -1 ||
    !val
  );
});

 this.rows = temp;
 this.table.offset = 0;
}
0
Vedha 11 Апр 2019 в 09:30

2 ответа

Лучший ответ

Из того, что я могу вывести из вашего кода, temp является «временным» хранилищем, в котором хранятся отфильтрованные данные, верно? И я предполагаю, что val является строкой фильтра.

Вы близки, но вам нужно будет внести следующие изменения:

updateFilter(event) {
  const temp = this.temp.filter(d => {
    const firstNameMatch = d.firstName.toLowerCase().indexOf(val) !== -1 || !val; 
    const dateMatch =  d.date.indexOf(val) !== -1 || !val; 
    const statusMatch = d.status.toLowerCase().indexOf(val) !== -1 || !val; 

    return firstNameMatch || dateMatch || statusMatch;
  });
  this.rows = temp;
  this.table.offset = 0;
}

Что касается даты, я не использовал toLowerCase(), так как не уверен, что строка поиска написана с большой буквы или нет. (например, 2019-04-04T06: 12: 43.541Z)

0
wentjun 11 Апр 2019 в 07:10

Я бы переписал ваш код так:

updateFilter(event) {
  var val = event.value.toLowerCase();

  const temp = this.temp.filter(x => x.firstName.toLowerCase().indexOf(val) != -1
    || x.status.toLowerCase().indexOf(val) != -1
    || x.date.toLowerCase().indexOf(val) != -1);
  console.log(temp);
}

Согласно предположению, вам нужно фильтровать записи только по дате, поэтому я обновил Stackblitz с демо DatePicker.

0
Prashant Pimpale 11 Апр 2019 в 07:30