组验证不踢角反应形式patchValue

组验证不踢角反应形式patchValue

问题描述:

我使用mydatepicker具有以下自制的辅助类:组验证不踢角反应形式patchValue

import {AbstractControl, FormBuilder} from '@angular/forms'; 
 

 
export const dateRangeValidator = (control: AbstractControl): {[key: string]: boolean} => { 
 
\t const start = control.get('start'); 
 
\t const end = control.get('end'); 
 
\t if (!start || !end) { 
 
\t \t return null; 
 
\t } 
 
\t if (!start.value || !end.value) { 
 
\t \t return {required: true}; 
 
\t } 
 
\t return start.value.jsdate < end.value.jsdate ? null : {invalid: true}; 
 
}; 
 

 
export const createDateRangeGroup = (fb: FormBuilder) => { 
 
\t return fb.group({ 
 
\t \t start: null, 
 
\t \t end: null 
 
\t }, { validator: dateRangeValidator}); 
 
}; 
 

 
export const setDateRangeGroupDates = (dates: AbstractControl, start: Date, end: Date) => { 
 
\t dates.patchValue({ 
 
\t \t start: { 
 
\t \t \t date: { 
 
\t \t \t \t year: start.getFullYear(), 
 
\t \t \t \t month: start.getMonth() + 1, 
 
\t \t \t \t day: start.getDate() 
 
\t \t \t } 
 
\t \t }, 
 
\t \t end: { 
 
\t \t \t date: { 
 
\t \t \t \t year: end.getFullYear(), 
 
\t \t \t \t month: end.getMonth() + 1, 
 
\t \t \t \t day: end.getDate() 
 
\t \t \t } 
 
\t \t } 
 
\t }); 
 
};

createDateRangeGroup正在组件中使用如下:

this.formGroup = this.fb.group({ 
 
    dates: createDateRangeGroup(this.fb) 
 
}); 
 
setDateRangeGroupDates(this.formGroup.get('dates'), new Date(2017, 10, 1), new Date(2017, 10, 10));

我可以在屏幕上看到日期设置正确。但是,当我尝试console.log(this.formGroup.get('dates'));时,它清楚地显示了一个错误{invalid: true},即使如果我只是从下拉列表中重新选择完全相同的日期,该组将自动生效。

我没有做什么?

+0

什么显示的console.log(start.value.jsdate) – Vega

+0

的OnInit。用于创建表单和修补值的整个代码位于OnInit – Sammy

+0

我不确定它是否是答案...我的意思是当您在返回start.value.jsdate之前放置console.log(start.value.jsdate)时,它显示了什么? – Vega

我结束了使用selDate属性如下所述:https://github.com/kekeh/mydatepicker#seldate-attribute