【发布时间】:2023-03-18 10:02:01
【问题描述】:
我正在构建一个 Angular 组件(html、css、spec.ts、ts),我总是希望 endDate > startDate。为了制作多个日期选择器,我已点击此链接 https://material.angular.io/components/datepicker/overview。
下面是我的startDate 和endDate 的HTML:
开始日期:
<div class="start-date" fxFlex="50%" fxFlexOrder="1">
<mat-form-field>
<input matInput [matDatepicker]="picker1" placeholder="{{'PORTAL.STARTDATE' | translate}}" type="text" formControlName="startDate" [(ngModel)]="unavailability.startDate" [readonly]="!componentPermission.writePermission">
<mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
<mat-datepicker #picker1></mat-datepicker>
</mat-form-field>
</div>
结束日期:
<div class="end-date" fxFlex="50%" fxFlexOrder="2">
<mat-form-field>
<input matInput [matDatepicker]="picker2" placeholder="{{'PORTAL.ENDDATE' | translate}}" type="text" formControlName="endDate" [(ngModel)]="unavailability.endDate" [readonly]="!componentPermission.writePermission">
<mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
<mat-datepicker #picker2></mat-datepicker>
</mat-form-field>
</div>
现在下面是我在页面加载时调用 validateForm 方法的角度代码 (ts)。
ngOnInit() {
....
this.validateForm();
}
validateForm() {
this.unavailabilityForm = this.formBuilder.group({
'startDate': ['', Validators.required],
'endDate': ['', Validators.required],
'unavailabilityReason': ['']
});
}
问题陈述:
现在我需要做的是 - 如果我在 startDate 中选择了任何日期(例如 11 月 23 日),那么在 endDate 日期选择器中,应该禁用 11 月 23 日之前(包括 23 日)之前的所有日期,以便我可以仅选择 11 月 23 日之后的日期。这可以在Angular中做到吗?
我们可以通过在 HTML 或 TS 中的某处放置 minDate 和 maxDate 来实现吗?
【问题讨论】:
-
你应该在使用formcontrols时去掉ngModel,不建议有两个绑定,而是使用表单控件,也像答案中提供的那样使用
[min],而是使用@中的formControl 987654335@ 而不是 ngModel 值。这是我的建议,它应该可以正常工作:) -
@AJT_82 我应该在哪里使用 [min] ?我尝试在 TS 或 HTML 中使用,但它不起作用(可能我使用方式错误)。能否指点一下如何正确使用它?
-
在模板中使用它,就像在回答中一样。不要在 TS 中使用它,它用于不同的目的(数字)
-
@AJT_82 我试过了。它没有用。
-
@AJT_82 我已经编辑了我的问题。如果有帮助,请告诉我。
标签: html angular angular-material angular-components angular-forms