如何在同一组件中重用 Material Angular Datepicker

Posted

技术标签:

【中文标题】如何在同一组件中重用 Material Angular Datepicker【英文标题】:How to reuse Material Angular Datepicker in the same component 【发布时间】:2021-11-05 01:22:47 【问题描述】:
<mat-form-field class="w-50 mt-2">
              <mat-label>Date of Change</mat-label>
              <input matInput [matDatepicker]="picker" formControlName="firstDateOfChange" required placeholder="dd/MM/yyyy">
              <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
              <mat-datepicker #picker startView="multi-year"></mat-datepicker>
            </mat-form-field>

如何在同一个模板上重复使用这个 Material Angular Date 选择器?第一个工作正常,但是当我尝试重用相同的日期选择器时,它会在控制台中引发错误。我已经尝试在互联网上搜索,但无法正常工作。

【问题讨论】:

您可能对两个日期选择器使用相同的 ID。如果你用其他东西改变#picker怎么办?它应该可以解决问题。 你设置了相同的formcontrolname吗? 不,我使用不同的表单控件名称。 非常感谢@Maz。将三个日期选择器的#picker 更改为不同的,实际上对我来说效果很好。我没有全部使用#picker,而是分别使用了#firstpicker、#secondpicker 和#lastpicker,并且效果很好。 很好,我会发布一个答案,它可能对其他人有用。 【参考方案1】:

您可能对两个日期选择器使用相同的 ID。

如果您将 #picker 更改为其他内容会怎样?它应该可以解决问题。

<mat-form-field class="w-50 mt-2">
  <mat-label>Date of Change</mat-label>
  <input matInput [matDatepicker]="picker" formControlName="firstDateOfChange" required placeholder="dd/MM/yyyy">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="multi-year"></mat-datepicker>
</mat-form-field>

<mat-form-field class="w-50 mt-2">
  <mat-label>Date of Change</mat-label>
  <input matInput [matDatepicker]="picker2" formControlName="firstDateOfChange" required placeholder="dd/MM/yyyy">
  <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
  <mat-datepicker #picker2 startView="multi-year"></mat-datepicker>
</mat-form-field>

【讨论】:

以上是关于如何在同一组件中重用 Material Angular Datepicker的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular 9 和 Material 设计的可重用输入组件

如何重用 Angular 测试文件中的所有导入

重用组件时如何触发转换?

React + Webpack + Material UI 样式在生产中中断

一个为 Vue JS 2.0 打造的 Material 风格的组件库

AngularDart 中带有验证和错误消息的材料输入