提问者:小点点

基于MatDatePicker的自定义日期选择器-开放选择器和焦点输入


Stackblitz示例

大家好,我创建了一个自定义日期选择器组件,它基于角度材质日期选择器。它具有以下附加功能:

  • 德语日期格式的输入掩码
  • 单击输入字段时打开日历

单击输入字段(背景色:棕色)时,日历将打开,输入字段将聚焦。因此,用户可以从日历中选择日期,也可以在输入字段中手动键入日期。

当单击mat-form-field(背景颜色:白色)时,输入字段默认会聚焦。我抓取单击事件以另外打开日期选择器:

<mat-form-field (click)="datePicker.open();">

日历打开,但输入字段不聚焦。即使当我将焦点方法添加到click-eventhandler中时,输入字段也不会得到焦点:

 <mat-form-field (click)="datePicker.open(); input.focus()">

似乎在单击mat表单字段时,我必须选择是打开日历还是聚焦输入字段,但我想要两者:-)

另一个不成功的方法是绘制mat form字段的onContainerClick事件。

我还试图调用input.click()方法中的mat-form-field.click()方法,但也没有成功。

有什么想法可以让我在单击mat form字段时实现与单击输入字段时相同的行为吗?

非常感谢你。


共1个答案

匿名用户

我成功地把this.datenput.nativeElement.focus()方法调用到setTimeout函数中:

模板:

<mat-form-field (click)="datePicker.open(); focusInputField();">

后面的代码:

  focusInputField() {
    setTimeout(() => this.dateInput.nativeElement.focus());
  }

我更新了stackblitz示例。