angular - 如何使用 NgDatePicker Angular 在 startDate 中处理 Duedate
问题描述
我尝试根据所选的 startDate 确定 Angular ngDatePicker 上的 DueDate 的 minDate。
例如,我选择 startDate:2019 年 5 月 16 日,因此我希望根据 startDate 上选择的日期禁用到期日期的 startDate 日期之前的日期。
我曾尝试使用 [(ngModel) 从 startDate 获取值,以便它可以用作到期日期中的 minDate,但它不能。
示例代码:
<div class="row">
<div class="col-sm-6 text-right form-inline">
<div class="form-group">
<label for="from">From</label>
<div class="input-group ml-3">
<input class="col-sm-6 form-control" placeholder="yyyy-mm-dd" name="logInDF"
formControlName="loginDateFrom" ngbDatepicker #logInDF="ngbDatepicker" [(ngModel)]="loginDateFrom">
<div class="input-group-append" (click)="logInDF.toggle()">
<span class="input-group-text"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6 text-left form-inline">
<div class="form-group">
<label for="inputLastName">To</label>
<div class="input-group ml-3">
<input class="col-sm-6 form-control" placeholder="yyyy-mm-dd" name="logInDT"
formControlName="loginDateTo" ngbDatepicker #logInDT="ngbDatepicker" [minDate]="loginDateFrom">
<div class="input-group-append" (click)="logInDT.toggle()">
<span class="input-group-text"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</div>
</div>
如何根据 StartDate 上的值从 dueDate 获取 MinDate?
解决方案
如果您使用的是响应式表单,我建议您删除ngModel
以防止数据流(模板驱动与响应式表单)之间的任何混淆。
formControlName
然后,在带有of的 ngBootstrap 日期选择器上loginDateFrom
,将(dateSelect)
事件与自定义方法绑定onSelect()
,该方法将在任何时候触发。用户在日期选择器上选择一个日期。
formControlName
此外,在带有of的 ngBootstrap 日期选择器上loginDateTo
,您必须将输入绑定设置[minDate]
为 的值loginDateTo
,即formGroup.value.loginDateTo
。
<div class="row">
<div class="col-sm-6 text-right form-inline">
<div class="form-group">
<label for="from">From</label>
<div class="input-group ml-3">
<input class="col-sm-6 form-control" placeholder="yyyy-mm-dd" name="logInDF" formControlName="loginDateFrom" ngbDatepicker #logInDF="ngbDatepicker" (select)="onSelect($event)">
<div class="input-group-append" (click)="logInDF.toggle()">
<span class="input-group-text"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6 text-left form-inline">
<div class="form-group">
<label for="inputLastName">To</label>
<div class="input-group ml-3">
<input class="col-sm-6 form-control" placeholder="yyyy-mm-dd" name="logInDT" formControlName="loginDateTo" ngbDatepicker #logInDT="ngbDatepicker" [minDate]="loginDateFrom">
<div class="input-group-append" (click)="logInDT.toggle()">
<span class="input-group-text"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</div>
</div>
然后,在您的 component.ts 上,我们定义onSelect()
方法,我们使用patchValueloginDateTo
使用来自的值更新 FormControl 。loginDateFrom
onSelect(event) {
//console.log(event);
this.formGroup.patchValue({
loginDateTo: event
})
}
这将根据在第一个 DatePicker 上选择的内容为 's绑定正确的[minDate]
值。loginDateTo
我创建了一个演示,它复制了上面所需的行为。
推荐阅读
- ios - SwiftUI Picker 在通过 NavigationLink 显示时崩溃
- javascript - TsLint:代码文档(注释)强制完成宽度点('.')
- python - 如何通过 matplotlib 中的特定点绘制曲面
- php - 使用可变电子邮件地址在 PHP 中发送电子邮件?
- reactjs - 如何在 react-native 应用程序中使用 react 应用程序的后端、动作和减速器?
- jenkins - 我正在使用带有 3 个奴隶的詹金斯,但是我想只在其中 2 个奴隶上运行詹金斯管道
- python - 两个命令“pip uninstall sklearn scikit-learn”都卡住了,如何正确删除?
- log4j2 - log4j2 翻转时删除
- javascript - 查找存储在数组中的对象值键内的单词
- asp.net - ASP.NET MVC 从嵌入式站点(外部站点)获取操作结果/活动