Winkel-2 Benutzerdefinierte validator-das hängt davon ab, auf einem anderen Formular-Steuerelement

Ich versuche zu machen, einen benutzerdefinierten validator für meine FormControl mealType

Wenn mein FormControl category einen Wert hat und mealType nicht, mealType unwirksam sein.

Wenn category keinen Wert hat, wird mealType gültig sein sollte.

Ich bin immer in der Konsole error:

TypeError: Cannot read property 'get' 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 ist nicht definiert.

Wie kann ich dies beheben?

Versuchen, diese:

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 bewirkt:

Fehler in
app/find-Seite/Unterkomponenten/finden-Seite/suchen-Formular.Komponente.html:36:5
verursacht durch: Cannot read property 'Wert' undefined

versuchen, diese:

class MealTypeValidator {

    constructor(private categoryFormControl: FormControl) { }

    mealTypeValidator(control: FormControl): { [error: string]: any } {
        if (this.categoryFormControl.value) {
            if (!control.value) {
                return { error: true };
            }
        }
    }
}

dann in meinem 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 diese Rechte? Ich glaube, ich bin gerade ein bisschen auf beiden deaktiviert die Validierung der Klasse I gemacht und die Nutzung von it.

Schreibe einen Kommentar