Angular 角度(10)材质touchUi日期选择器-无法选择任何内容
早上好 我最近更新了一个相当老的角度项目,从~6到10。在我不得不修复它的所有其他部分之后,我只剩下一个材料日期选择器,我不能再工作了 简言之:它可以工作,它出现了,我可以轻弹月份和年份下拉列表,但在主要内容区域内的任何内容,我不能同时单击日期和年份。嗯,我可以点击,但什么也不做。没有控制台输出 我的基本日期选择器包装组件:Angular 角度(10)材质touchUi日期选择器-无法选择任何内容,angular,typescript,datepicker,angular-material,angular-material-datetimepicker,Angular,Typescript,Datepicker,Angular Material,Angular Material Datetimepicker,早上好 我最近更新了一个相当老的角度项目,从~6到10。在我不得不修复它的所有其他部分之后,我只剩下一个材料日期选择器,我不能再工作了 简言之:它可以工作,它出现了,我可以轻弹月份和年份下拉列表,但在主要内容区域内的任何内容,我不能同时单击日期和年份。嗯,我可以点击,但什么也不做。没有控制台输出 我的基本日期选择器包装组件: import { Component, Input, Output, EventEmitter } from '@angular/core'; @Component({
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'date-picker-component',
templateUrl: './date-picker.component.html',
styleUrls: ['./date-picker.component.css']
})
export class DatePickerComponent {
@Input() public disabled: boolean;
@Input() public placeholder: string;
@Input() public value: Date;
@Input() public minDate: Date;
@Input() public maxDate: Date;
@Input() public filter: Function;
@Output() public onSelect = new EventEmitter<Date>();
public onDateChange(date: Date): void {
this.onSelect.emit(date);
}
}
哦,我想在app.module.ts提供程序中验证设置详细信息也很有用:
{
provide: MAT_DATE_LOCALE,
useValue: 'en-GB'
}
还将MatNativeDateModule导入某处或其他
编辑:发现的初始原因是筛选器。它不喜欢过滤器。取下过滤器,我可以再次选择日期和内容。
没什么帮助,但这只是个开始。
筛选器正在工作-可以通过筛选的日期看到,但不允许对其进行选择
以下是针对上述问题的过滤器:
public dateFilter(): (dt: Date) => boolean {
const fn = (dt: Date): boolean => {
const day = DateExtensions.toStringFormat(dt, 'dddd');
return ArrayExtensions.firstOrDefault(this._availableDates, x => x.day === day) != undefined;
};
return fn;
}
修复了这个光荣的人在我的GitHub上发现的问题 似乎Angular 11不喜欢最初评估过滤器的方法:
public dateFilter(): (dt: Date) => boolean { ... }
{
provide: MAT_DATE_LOCALE,
useValue: 'en-GB'
}
public dateFilter(): (dt: Date) => boolean {
const fn = (dt: Date): boolean => {
const day = DateExtensions.toStringFormat(dt, 'dddd');
return ArrayExtensions.firstOrDefault(this._availableDates, x => x.day === day) != undefined;
};
return fn;
}
public dateFilter(): (dt: Date) => boolean { ... }
<date-picker-component
[filter]="dateFilter()"
...>
</date-picker-component>
public dateFilter = (dt: Date): boolean => { ... }
<date-picker-component
[filter]="dateFilter"
...>
</date-picker-component>