javascript - Kan inte implementera ValidatorFn-gränssnittet


Jag vill implementera en anpassad validerare för flera fält med hjälp av ValidatorFn-gränssnittet från Angular.

Det här är min kod: (Jag följde de angivna stegen på https://angular.io/guide/form-validation#cross-field-validation)

import { ValidatorFn, ValidationErrors, FormGroup } from "@angular/forms";

/**
* This validator implements the ValidatorFn Interface from Angular. 
* 
* @param formGroup- the FormGroup that needs Validation
* 
* @returns null if the form is valid, else some {@link ValidatorErrors}
*/
export const CompleteBloodpressureValidator: ValidatorFn = (formGroup: FormGroup) => {

    const bloodpressureSys = formGroup.get("bloodPressureSysFormControl");
    const bloodpressureDia = formGroup.get("bloodPressureDiaFormControl");

    if (bloodpressureSys != null && bloodpressureDia == null || bloodpressureSys == null && bloodpressureDia != null){
        // return some custom ValidatorErrors
        return {
            bloodPressureIncomplete: true
        };
    }
    // if everything is fine, return null
    return null;
 }

Men den angulara kompilatorn fortsätter att säga följande:

Type '(fromGroup: FormGroup) => { bloodPressureIncomplete: boolean; } | null' is not assignable to type 'ValidatorFn'.

Types of parameters 'fromGroup' and 'control' are incompatible.

Type 'AbstractControl' is missing the following properties from type 'FormGroup': controls, registerControl, addControl, removeControl, and 3 more.ts(2322)

Det här är helt meningslöst enligt min åsikt, min implementering av ValidatorFn är exakt som den ska se ut.

Några råd om vad jag gör fel här?

Svar #1

Så svaret på den här frågan är att uppdatera TypeScript-versionen eller byta

formGroup: FormGroup

med

formGroup: AbstractControl

Det verkar orsakas av en bugg i TypeScript-versionen.

REDIGERA: att uppdatera till den nyaste versionen av TypeScript ändrar ingenting. Jag antar att detta kanske är ett fel i Angular-dokumentationen.

Relaterade artiklar