gpt4 book ai didi

validation - Angular 2表单验证开始日期<=结束日期

转载 作者:行者123 更新时间:2023-12-04 00:00:22 24 4
gpt4 key购买 nike

我正在尝试添加验证,以使结束日期不能早于开始日期。不幸的是,我不知道该怎么做,到目前为止,我在互联网上找不到任何有用的建议。我的表格如下所示:

editAndUpdateForm(tageler: Tageler) {
this.tageler = tageler;
this.tagelerForm = this.fb.group({
title: [this.tageler.title, Validators.required],
text: this.tageler.text,
group: [[this.tageler.group], Validators.required],
date_start: new Date(this.tageler.start).toISOString().slice(0, 10),
date_end: new Date(this.tageler.end).toISOString().slice(0, 10),
...
});
this.tagelerForm.valueChanges
.subscribe(data => this.onValueChanged(data));
}


到目前为止,我的验证:

onValueChanged(data?: any) {
if (!this.tagelerForm) {
return;
}
const form = this.tagelerForm;

for (const field in this.formErrors) {

// clear previous error message (if any)
this.formErrors[field] = '';
const control = form.get(field);

if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' ';
}
}
}
}

validationMessages = {
'title': {
'required': 'Geben Sie bitte einen Namen ein.',
},
'group': {
'required': 'Wählen Sie bitte eine Gruppe aus.'
},
'bringAlong': {
'required': 'Bitte Feld ausfüllen.'
},
'uniform': {
'required': 'Bitte Feld ausfüllen.'
},
};

formErrors = {
'title': 'Geben Sie bitte einen Namen ein.',
'group': 'Wählen Sie bitte eine Gruppe aus.',
'bringAlong': 'Bitte Feld ausfüllen',
'uniform': 'Bitte Feld ausfüllen',
};


表单控件“ date_start”和“ date_end”包含形式为“ dd.MM.yyyy”的日期字符串,我希望“ date_end”更大或等于“ date_start”。

我想直接显示错误消息(我的html代码如下所示:)

<label for="formControlName_date_end" class="col-3 col-form-label">Ende:</label>
<div class="col-5">
<input id="formControlName_date_end" class="form-control" formControlName="date_end" type="date" value="{{tageler.end | date: 'yyyy-MM-dd'}}">
</div>
<div *ngIf="formErrors.date_end" class="alert alert-danger">
{{ formErrors.date_end }}
</div>


有人可以帮我吗?

谢谢!

最佳答案

我们无法在验证中执行此操作,因为我们需要两个控件值startdate和enddate进行比较。因此最好在组件中比较两个日期

error:any={isError:false,errorMessage:''};

compareTwoDates(){
if(new Date(this.form.controls['date_end'].value)<new Date(this.form.controls['date_start'].value)){
this.error={isError:true,errorMessage:'End Date can't before start date'};
}
}


在你的HTML

<label for="formControlName_date_end" class="col-3 col-form-label">Ende:</label>
<div class="col-5">
<input id="formControlName_date_end" class="form-control" formControlName="date_end" type="date" value="{{tageler.end | date: 'yyyy-MM-dd'}}" (blur)="compareTwoDates()">
</div>
<div *ngIf="error.isError" class="alert alert-danger">
{{ error.errorMessage }}
</div>

关于validation - Angular 2表单验证开始日期<=结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43779438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com