Ich versuche, einen benutzerdefinierten Validator für meine Formcontrol mealType
Angular 2 Validator Gewohnheit, die
Wenn mein Formcontrol category
einen Wert hat, zu machen und mealType
nicht, sollte mealType
ungültig.
Wenn category
keinen Wert hat, sollte mealType
gültig sein.
Ich erhalte eine Konsole Fehler:
TypeError: Cannot read property 'get' of undefined
Code:
ngOnInit() {
this.findForm = this.formBuilder.group({
categories: [null, Validators.required],
mealTypes: [null, this.validateMealType],
distanceNumber: null,
distanceUnit: 'kilometers',
keywords: null,
});
}
validateMealType() {
if (this.findForm.get('categories').value) {
if (this.findForm.get('mealTypes').value) {
var mealTypeError = false;
} else {
var mealTypeError = true;
}
} else {
var mealTypeError = false;
}
return mealTypeError ? null : {
error: true
}
}
Es ist meine Form, die nicht definiert ist.
Wie kann ich das beheben?
Der Versuch, dies:
validateMealType(categoryControl: FormControl, mealTypeControl: FormControl) {
if (categoryControl.value) {
if (!mealTypeControl.value) {
var mealTypeError = true;
} else {
var mealTypeError = false;
}
} else {
var mealTypeError = false;
}
return mealTypeError ? null : {
error: true
}
}
aber es verursacht:
Error in app/find-page/subcomponents/find-page/find-form.component.html:36:5 caused by: Cannot read property 'value' of undefined
dies versucht:
class MealTypeValidator {
constructor(private categoryFormControl: FormControl) { }
mealTypeValidator(control: FormControl): { [error: string]: any } {
if (this.categoryFormControl.value) {
if (!control.value) {
return { error: true };
}
}
}
}
dann in meiner Form Komponente:
ngOnInit() {
this.findForm = this.formBuilder.group({
categories: [null, Validators.required],
mealTypes: [null, new MealTypeValidator(this.findForm.get('categories').mealTypeValidator()],
distanceNumber: null,
distanceUnit: 'kilometers',
keywords: null,
});
}
aber ich habe Kompilierungsfehler. Wie bekomme ich das richtig? Ich denke, dass ich sowohl in der Validierungsklasse, die ich gemacht habe, als auch in der Verwendung davon ein bisschen abwesend bin.
Ist es möglich, mehrere Formgruppenvalidatoren zu haben? Was ist, wenn ich einen anderen Validator als nur "validateMealType" möchte, der von mehreren Steuerelementen abhängt? –