Ich mydatepicker mit der folgenden hausgemachten Helfer-Klasse:Gruppe Prüfer treten nicht in nach Angular reaktive Form 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
wird innerhalb der Komponente verwendet wird, wie folgt:
this.formGroup = this.fb.group({
dates: createDateRangeGroup(this.fb)
});
setDateRangeGroupDates(this.formGroup.get('dates'), new Date(2017, 10, 1), new Date(2017, 10, 10));
Ich kann auf dem Bildschirm sehen, dass die Daten richtig eingestellt sind. Jedoch, wenn ich versuche, console.log(this.formGroup.get('dates'));
zeigt es deutlich einen Fehler von {invalid: true}
, obwohl, wenn ich gerade die genau gleichen Daten aus dem Dropdown wieder auswählen die Gruppe wird automatisch gültig.
Was mache ich nicht?
und was zeigt console.log (start.value.jsdate) – Vega
OnInit. Der gesamte Code zum Erstellen des Formulars und das Patchen des Wertes ist in OnInit – Sammy
Ich bin mir nicht sicher, es war die Antwort ... Ich meinte, wenn Sie console.log (start.value.jsdate) kurz vor der Rückkehr start.value.jsdate platzieren, was es zeigt? – Vega