如何在 Angular 中为 Clarity Datepicker 设置默认值
How to set a defualt value for a Clarity Datepicker in Angular
我目前有一个 Angular 7 Project wit .Net core 2.0,如果我使用 Clarity 组件,则用于样式设置。
有人知道如何为清晰度日期选择器设置默认值吗?
(我在 angular 中使用反应式表单,它还使用验证来检查字段是否为空且不大于当前日期。)
我的 HTML 长什么样:
<clr-date-container>
<label>Service Date</label>
<input type="date" clrDate formControlName="fromDateField"
[clrDate]="ValidateFromDateField()" />
<clr-control-error>{{this.errorMsgFromdate}}</clr-control-error>
</clr-date-container>
我的组件是什么样的
ValidateFromDateField() {
if ((this.claimDetailService.DefaultDate === "") || (this.claimDetailService.DefaultDate === undefined)
|| (this.claimDetailService.DefaultDate === null)) {
this.claimDetailService.DefaultDate = this.claimDetailform.get('fromDateField').value;
}
console.log('Defualt date ', this.claimDetailService.DefaultDate);
this.claimDetailService.currentClaimDetail.FROMDATE = new Date(this.claimDetailform.get('fromDateField').value).toDateString();
this.claimDetailService.currentClaimDetail.TODATE = new Date(this.claimDetailform.get('fromDateField').value).toDateString();
this.errorMsgFromdate = this.FieldValidation(this.claimDetailService.currentClaimDetail.FROMDATE, 'fromDateField');
if (this.errorMsgFromdate === 'valid') {
this.errorMsgFromdate = ' ';
this.PopulateFromDateErr();
}
if (this.errorMsgFromdate !== '') {
this.claimDetailform.get('fromDateField').setErrors(this.errorMsgFromdate);
}
this.claimDetailService.DefaultDate = this.claimDetailform.get('fromDateField').value;
}
我确实尝试过使用 setValue() 方法,但它在控制台中给了我一个错误,说 setValue 不是有效的 属性 清晰度 datepicker.And 验证是在模糊但模糊的情况下完成的不适用于日期选择器,所以我使用 [clrDate] 来调用验证方法。
使用 [formControl] 并将其绑定到您在 component.ts
中创建的 formControl
<clr-date-container>
<label>Service Date</label>
<input type="date" clrDate
[formControl]="myDateField"
id="date" name="date"
[(ngModel)]="date"
[clrDate]="ValidateFromDateField()" />
<clr-control-error>{{this.errorMsgFromdate}}</clr-control-error>
</clr-date-container>
所以在你的 ts 组件中创建 formControl
myDateField = new FormControl('');
并将值修补为:
this.myDateField.patchValue('02/02/2019');
另请记住,如果日期错误,根据文档,日期选择器将 return 为 null:
Date picker emits null when an invalid date is entered after a valid date was set.
因此请务必检查您使用的是 3 种格式中的哪一种,因为即使日期正确,它也不会为您解析任何格式,angular 的默认值是:
MM/DD/YYYY
您可以在官方文档中阅读更多内容:https://clarity.design/documentation/datepicker#examples
这里你需要像下面那样将默认日期绑定到 ngModel
<form class="compact">
<section class="form-block">
<div class="form-group">
<label for="date">Date:</label>
<input type="date" id="date" [(ngModel)]="defaultDate" [ngModelOptions]="{standalone: true}" clrDate>
</div>
</section>
</form>
并在TS文件中声明defaultDate
defaultDate = '06/14/1989';
这是最简单的解决方案,希望对您有所帮助
find the stackblits link here
如果您想使用反述形式,则必须在您的父模块中添加 ReactiveFormsModule
。
您还需要在 html 模板中声明一个 fromGroup 并最初为控件分配值,如上面的解决方案所示。
简单的你可以如下操作:
this.myForm = formBuildr.group({
myDateControl: [new Date().toLocaleDateString()]});
或者
myDateField = new FormControl(new Date().toLocaleDateString());
我目前有一个 Angular 7 Project wit .Net core 2.0,如果我使用 Clarity 组件,则用于样式设置。
有人知道如何为清晰度日期选择器设置默认值吗?
(我在 angular 中使用反应式表单,它还使用验证来检查字段是否为空且不大于当前日期。)
我的 HTML 长什么样:
<clr-date-container>
<label>Service Date</label>
<input type="date" clrDate formControlName="fromDateField"
[clrDate]="ValidateFromDateField()" />
<clr-control-error>{{this.errorMsgFromdate}}</clr-control-error>
</clr-date-container>
我的组件是什么样的
ValidateFromDateField() {
if ((this.claimDetailService.DefaultDate === "") || (this.claimDetailService.DefaultDate === undefined)
|| (this.claimDetailService.DefaultDate === null)) {
this.claimDetailService.DefaultDate = this.claimDetailform.get('fromDateField').value;
}
console.log('Defualt date ', this.claimDetailService.DefaultDate);
this.claimDetailService.currentClaimDetail.FROMDATE = new Date(this.claimDetailform.get('fromDateField').value).toDateString();
this.claimDetailService.currentClaimDetail.TODATE = new Date(this.claimDetailform.get('fromDateField').value).toDateString();
this.errorMsgFromdate = this.FieldValidation(this.claimDetailService.currentClaimDetail.FROMDATE, 'fromDateField');
if (this.errorMsgFromdate === 'valid') {
this.errorMsgFromdate = ' ';
this.PopulateFromDateErr();
}
if (this.errorMsgFromdate !== '') {
this.claimDetailform.get('fromDateField').setErrors(this.errorMsgFromdate);
}
this.claimDetailService.DefaultDate = this.claimDetailform.get('fromDateField').value;
}
我确实尝试过使用 setValue() 方法,但它在控制台中给了我一个错误,说 setValue 不是有效的 属性 清晰度 datepicker.And 验证是在模糊但模糊的情况下完成的不适用于日期选择器,所以我使用 [clrDate] 来调用验证方法。
使用 [formControl] 并将其绑定到您在 component.ts
中创建的 formControl <clr-date-container>
<label>Service Date</label>
<input type="date" clrDate
[formControl]="myDateField"
id="date" name="date"
[(ngModel)]="date"
[clrDate]="ValidateFromDateField()" />
<clr-control-error>{{this.errorMsgFromdate}}</clr-control-error>
</clr-date-container>
所以在你的 ts 组件中创建 formControl
myDateField = new FormControl('');
并将值修补为:
this.myDateField.patchValue('02/02/2019');
另请记住,如果日期错误,根据文档,日期选择器将 return 为 null:
Date picker emits null when an invalid date is entered after a valid date was set.
因此请务必检查您使用的是 3 种格式中的哪一种,因为即使日期正确,它也不会为您解析任何格式,angular 的默认值是:
MM/DD/YYYY
您可以在官方文档中阅读更多内容:https://clarity.design/documentation/datepicker#examples
这里你需要像下面那样将默认日期绑定到 ngModel
<form class="compact">
<section class="form-block">
<div class="form-group">
<label for="date">Date:</label>
<input type="date" id="date" [(ngModel)]="defaultDate" [ngModelOptions]="{standalone: true}" clrDate>
</div>
</section>
</form>
并在TS文件中声明defaultDate
defaultDate = '06/14/1989';
这是最简单的解决方案,希望对您有所帮助 find the stackblits link here
如果您想使用反述形式,则必须在您的父模块中添加 ReactiveFormsModule
。
您还需要在 html 模板中声明一个 fromGroup 并最初为控件分配值,如上面的解决方案所示。
简单的你可以如下操作:
this.myForm = formBuildr.group({
myDateControl: [new Date().toLocaleDateString()]});
或者
myDateField = new FormControl(new Date().toLocaleDateString());