使“过滤器”与“角度材质数据表”中的“数组对象”属性正确配合使用

时间:2019-01-28 16:07:32

标签: arrays angular filter angular-material

我有一个Angular材质数据表,该表以Angular Material文档中所述的方式实现:

https://material.angular.io/components/table/overview#filtering

我的问题出在我的数据源上,我有这个数据模型:

export interface CustomerHistory {
  entity_id: number;
  email: string;
  name: string;
  lastname: string;
  cpfcnpj: string;
  cpfcnpj2: string;
  rg: string;
  phone1: string;
  phone2: string;
  country: string;
  state: string;
  city: string;
  address: string;
  FullAddress: string;
  cep: string;
  orders: CustomerOrders[];
}

最后一个属性是“订单数组”,这导致过滤器无法与其他字段一起正常工作

这是我的过滤器功能:

applyFilter(filterValue: string) {
filterValue = filterValue.trim(); // Remove whitespace
filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
this.dataSource.filter = filterValue;
}

我的问题是如何在数据源中的数组对象属性中搜索?

1 个答案:

答案 0 :(得分:2)

首先,当您绘制table时,请确保创建类似

的循环
    this.dataSource.data.orders.forEach(element => {
    element.toString();
//turn CustomerOrders[] to string
});

然后,applyFilter()应该可以工作

`applyFilter(filterValue: string) {
this.dataSource.filter = filterValue.trim().toLowerCase();
}`