Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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 角度(10)材质touchUi日期选择器-无法选择任何内容_Angular_Typescript_Datepicker_Angular Material_Angular Material Datetimepicker - Fatal编程技术网

Angular 角度(10)材质touchUi日期选择器-无法选择任何内容

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({

早上好

我最近更新了一个相当老的角度项目,从~6到10。在我不得不修复它的所有其他部分之后,我只剩下一个材料日期选择器,我不能再工作了

简言之:它可以工作,它出现了,我可以轻弹月份和年份下拉列表,但在主要内容区域内的任何内容,我不能同时单击日期和年份。嗯,我可以点击,但什么也不做。没有控制台输出

我的基本日期选择器包装组件:

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>