【问题标题】:How can I validate the Date from a Angular material Datepicker based on another Datepicker如何基于另一个 Datepicker 验证来自 Angular 材料 Datepicker 的日期
【发布时间】:2021-03-26 03:55:19
【问题描述】:

我有 2 个 Angular Material Datepicker,并希望实现以下验证: - 第一个日期选择器的日期必须是第二个的最小日期

这是我的日期选择器

<mat-form-field appearance="legacy" [style.width.%]="45">
  <mat-label>Phasenbeginn</mat-label>
  <input matInput  placeholder="Beginn" [matDatepicker]="picker" formControlName="pStart">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>                                   
          
<mat-form-field appearance="legacy" [style.width.%]="45">
  <mat-label>Phasenende</mat-label>
  <input matInput  placeholder="Ende" [matDatepicker]="picker2" formControlName="pEnd">
  <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
  <mat-datepicker #picker2></mat-datepicker>
 </mat-form-field>

在他们说的材料文档中,您可以将“[min] = minDate”绑定添加到输入,但我认为这仅用于静态日期,保存在变量中。

我想在第二个选择器上做这样的事情

<input matInput [min]="picker.value" placeholder="Ende" [matDatepicker]="picker2" formControlName="pEnd">

【问题讨论】:

标签: angular validation dynamic datepicker


【解决方案1】:

在尝试自定义验证器之前,您应该能够通过绑定到 [min] 属性的属性来执行此操作。试试这个:

<mat-form-field appearance="legacy" [style.width.%]="45">
  <mat-label>Phasenbeginn</mat-label>
  <input matInput [max]="pEnd.value" placeholder="Beginn" [matDatepicker]="picker" formControlName="pStart">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>                                   
          
<mat-form-field appearance="legacy" [style.width.%]="45">
  <mat-label>Phasenende</mat-label>
  <input matInput [min]="pStart.value" placeholder="Ende" [matDatepicker]="picker2" formControlName="pEnd">
  <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
  <mat-datepicker #picker2></mat-datepicker>
 </mat-form-field>

上面的代码确实假设pStartpEnd 在formGroup 中正确实现了formControls。 formControlName 不能在具有已定义 [formGroup]&lt;form&gt; 之外使用。

【讨论】:

  • 您好,谢谢您的回复,我试过了,但收到以下错误:无法读取未定义的属性“值”
  • 确保您在 TS 文件中创建了 pStart 和 pEnd FormControl,并且它们始终被定义。如果您使用的是 FormGroup,您可能需要将 pStart.value 替换为 [FormGroup_name].controls.pStart.value 并与 pEnd 相同。
  • 非常感谢。字符串是 this.projectForm.controls['phases'].value[i].pStart
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多