angular - 有没有办法根据日期过滤 Material 表

标签 angular filter datepicker angular-material

我正在尝试使用 mat datepicker 根据开始时间和结束时间过滤表。但它不工作。 这是我的 html 代码-

    <mat-form-field><input matInput [matDatepicker]="dp1" (keyup)="dateFilter($event.target.value,'start')" (dateInput)="addEvent($event.target.value, $event)" placeholder="Choose a date"><mat-datepicker-toggle matSuffix [for]="dp1" ></mat-datepicker-toggle<mat-datepicker #dp1 ></mat-datepicker>

这是我用于手动输入日期的 ts 文件代码,它可以正常工作-

dateFilter(filterValue : String,input)  {
debugger;
 this.dataSource.filter = filterValue.trim().toLowerCase();
 if(input=='start'){
  this.dataSource.filterPredicate = function(data, filter: string): boolean {
    return data.startTime.toLowerCase().includes(filter); };} else{ this.dataSource.filterPredicate = function(data, filter: string): boolean {
    return data.endTime.toLowerCase().includes(filter);
};
}  }

此函数用于从无效的日期选择器中选择日期 -

addEvent(filterValue: string, event: MatDatepickerInputEvent<Date>) {
  debugger;
  console.log(event.value);
  if(event.value!=undefined){
    filterValue =this.datepipe.transform(filterValue, 'MM/dd/yyyy');
  } 
  this.dataSource.filter = filterValue.trim();
  this.dataSource.filterPredicate = function(data, filter: string): boolean {
  return data.startTime.includes(filter);
};

最佳答案

使用 M/d/yyyy 格式解析 DatePicker 中的日期,例如:

this.datepipe.transform(filterValue, 'M/d/yyyy');

根据您的 JSON 数据,它实际上不包含前导零。

Working_Demo

我从日期选择器中选择了 2019 年 5 月 1 日,并得到了结果中的第一条记录。

EDIT:

你需要注册一个filterPredicate,然后你可以设置DataSourcefilter属性

所以只需在 constructorngOnInit() 方法中注册它,例如:

constructor(public datepipe: DatePipe) {
    this.dataSource.filterPredicate = (data, filter: string) => 
        !filter || data.startTime.includes(filter);
}

点击事件只是:

this.dataSource.filter = filterValue.trim();

关于angular - 有没有办法根据日期过滤 Material 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521843/

相关文章:

angular - AWS CodePipeline,构建失败并出现错误

filter - 如何修改 JIRA 的 "Quick Search"?

javascript - 手动编辑日期或清除日期时, Bootstrap 日期选择器更改日期事件不会触发

angular - ng2-pagination 不触发页面更改

java - 是否可以在没有 Node.js/npm 的情况下创建 Angular 5 Web 应用程序?

filter - 通过 CSS3(过滤器)更改图像颜色

javascript - 为什么 JS 'id' 返回未定义

c# - 如何将光标置于C#中Datepicker控件的第一个位置?

javascript - Ajax 函数通过单击按钮显示日期选择器

angular - 如何通过 aot 编译在 Angular 中提供备用 i18n 语言链接?