【发布时间】:2019-06-10 06:58:17
【问题描述】:
我正在尝试使用 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);
};
} }
这个函数可以从 datepicker 中选择不工作的日期 -
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);
};
【问题讨论】:
-
是的,你可以!您能否提供一些示例数据,特别是针对
startTime -
{ name: '测试脚本', startTime: '5/1/2019 17:43:09', endTime: '1/5/2019 17:43:19',status:'running '} .. 这是我正在做过滤器的对象
-
所以你需要为
startTime使用管道,正如你所看到的,它包含时隙也控制台filterValue变量的值 -
不能使用角材质内置滤镜吗??
-
检查发布的答案
标签: angular filter datepicker angular-material