Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 物料数据表过滤控制_Angular_Angular Material - Fatal编程技术网

Angular 物料数据表过滤控制

Angular 物料数据表过滤控制,angular,angular-material,Angular,Angular Material,我正在使用并试图实现对所有值的过滤。 我注意到的是,在使用MatTableDataSource时,filter只搜索传递的顶级实体,如果实体附加了相关记录,则不会搜索它 是否可以控制过滤器搜索的深度并使其能够搜索附加的相关实体 编辑1个由原理图生成的示例代码: @ViewChild(MatPaginator) paginator: MatPaginator; @ViewChild(MatSort) sort: MatSort; @Input() dataSource: MatTable

我正在使用并试图实现对所有值的过滤。 我注意到的是,在使用MatTableDataSource时,filter只搜索传递的顶级实体,如果实体附加了相关记录,则不会搜索它

是否可以控制过滤器搜索的深度并使其能够搜索附加的相关实体

编辑1个由原理图生成的示例代码:

@ViewChild(MatPaginator) paginator: MatPaginator;
  @ViewChild(MatSort) sort: MatSort;

  @Input() dataSource: MatTableDataSource<TestEntity>;

  /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
  displayedColumns = ['id', 'name', 'view_related_child'];

  ngOnInit() {
    this.dataSource.paginator = this.paginator;
    this.dataSource.sort = this.sort;
  }

  applyFilter(filterValue: string) {
    filterValue = filterValue.trim(); // Remove whitespace
    filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
    this.dataSource.filter = filterValue;
  }
export class TestEntity {
    id: string;
    name: string;
    childEntity: ChildEntity;
}

export class ChildEntity {
    childId: string;
    childName: string;
    childDate: string;
}

您可以将“应用过滤器”方法更改为:

applyFilter(filterValue: string) {
    console.log(filterValue)

    this.dataSource.filterPredicate = (data: TestEntity, filter: string) =>   data.childEntity.childName.indexOf(filter) != -1 
    filterValue = filterValue.trim(); 
    this.dataSource.filter = filterValue 
  }
要根据childEntity的childName筛选数据,

您可以将“应用过滤器”方法更改为:

applyFilter(filterValue: string) {
    console.log(filterValue)

    this.dataSource.filterPredicate = (data: TestEntity, filter: string) =>   data.childEntity.childName.indexOf(filter) != -1 
    filterValue = filterValue.trim(); 
    this.dataSource.filter = filterValue 
  }
要根据childEntity的childName筛选数据,

你检查了吗?@fatemefazli现在,在我最初的搜索中没有弹出。你能提供一些代码或stackblitz吗?@fatemefazli当然可以,但在这个阶段不会有太大帮助,使用原理图生成表格非常简单。@fatemefazli基本上我希望能够按实体孩子的数据进行过滤,你检查了吗?@fatemefazli现在,在我最初的搜索中没有弹出。你能提供一些代码或stackblitz吗。@fatemefazli当然,但在这个阶段不会有太大帮助,使用原理图生成表格非常简单。@fatemefazli基本上我希望能够通过实体childs数据tooThanks@fatemefazli进行过滤,如果您希望在相关实体中搜索多个字段,或者降低另一个级别,该怎么办?谢谢@fatemefazli,如果您希望在相关实体中搜索多个字段,或者降低另一个级别,该怎么办?