Javascript 动态响应表单中的自定义验证器不工作
我试图为开始时间和结束时间设置一个自定义验证器,但是错误没有显示在html中。我的动态表单中有开始日期、结束日期、开始时间和结束时间字段。当用户输入相同的开始和结束日期,且开始时间大于结束时间时,应显示该时间错误。为此,我设置了一个类似这样的自定义验证器 FormGroup Initiation。添加FormArray以动态推送新行Javascript 动态响应表单中的自定义验证器不工作,javascript,angular,typescript,angular-reactive-forms,Javascript,Angular,Typescript,Angular Reactive Forms,我试图为开始时间和结束时间设置一个自定义验证器,但是错误没有显示在html中。我的动态表单中有开始日期、结束日期、开始时间和结束时间字段。当用户输入相同的开始和结束日期,且开始时间大于结束时间时,应显示该时间错误。为此,我设置了一个类似这样的自定义验证器 FormGroup Initiation。添加FormArray以动态推送新行 this.loadFilesForm = this.formBuilder.group({ addRemoveFormArray: this.formBui
this.loadFilesForm = this.formBuilder.group({
addRemoveFormArray: this.formBuilder.array([
this.formBuilder.group({
searchType: new FormControl('any'),
customFieldType: new FormControl(''),
dynamicInputField: new FormControl(''),
startDate: new FormControl(null, [Validators.required]),
startTime: new FormControl(null,
[Validators.pattern(/^((0?[1-9]|1[0-2]):[0-5][0-9] ?([APap][Mm]))$/), Validators.required]),
endDate: new FormControl(null, [Validators.required]),
endTime: new FormControl(null, [Validators.pattern(/^((0?[1-9]|1[0-2]):[0-5][0-9] ?([APap][Mm]))$/), Validators.required])
})
])
});
在从下拉列表中选择日期输入时,我正在其中设置自定义验证功能
onChangeSelect(rowIndex, item) {
let loadFieldsTextArray = (<FormArray>this.loadFilesForm.get('addRemoveFormArray'));
if (item === 'DATE') {
loadFieldsTextArray.at(rowIndex).get('startTime').setValidators([this.startTimeValidator(rowIndex)])
}
/** Re-trigger validation for all fields */
const loadFileTextArray = this.loadFilesForm.get('addRemoveFormArray') as FormArray;
for (let control of loadFileTextArray.controls) {
const grp = control as FormGroup;
const val = (grp.controls.dynamicInputField as FormControl);
val.updateValueAndValidity();
}
}
在HTML中,我显示如下错误
<div *ngIf="loadFilesForm.get(['addRemoveFormArray',rowIdx]).get('startTime').hasError('startError')">
Time error
</div>
时间误差
请让我知道我做错了什么,我还尝试在html中设置函数并返回error true false,但这也不起作用。你检查过官方文档了吗?
<div *ngIf="loadFilesForm.get(['addRemoveFormArray',rowIdx]).get('startTime').hasError('startError')">
Time error
</div>