Kan ikke legge til en ny metode i en Angular TypeScript-klasse (FormGroup)


Jeg prøver å legge til en ekstra metode i Angulars FormGroup-klasse som vil sette tilstanden til gruppen og sette feilmeldingstilstanden fra serveren.

Jeg har følgende kode i en form-helper.ts-fil i min Angular4-app.

import { FormGroup } from '@angular/forms';

export interface FormGroup {
  setValueAndErrors(state: any, memberErrors: any);
}

FormGroup.prototype.setValueAndErrors = (state: any, memberErrors: any) => {
  this.setValue(state);
  // do some stuff with the memberErrors parameter
}

Men kompilatoren kaster en feil på FormGroup.prototype.setValueAndErrors-linjen.

FEIL i C:/dev/AppName/AppName-Client/src/app/shared/utils/form-helper.ts (3,21): Egenskapen 'setValueAndErrors' finnes ikke på typen 'FormGroup'.

Svar #1

Følgende kompilerer for meg:

declare module "@angular/forms/src/model" {
  interface FormGroup {
    setValueAndErrors(this: FormGroup, state: any, memberErrors: any): void;
  }
}

FormGroup.prototype.setValueAndErrors = function(this: FormGroup, state: any, memberErrors: any): void {
  this.setValue(state);
}

Nøkkelen ser ut til å være å bruke modulnavnet som refererer til den faktiske modulen/filen som inneholder FormGroup.

Du må også ta for deg bruken din av this.

Svar #2

Dette fungerte for den nyere versjonen av Angular (jeg bruker 13)

declare module "@angular/forms" {
  interface FormGroup {
    setValueAndErrors(this: FormGroup, state: any, memberErrors: any): void;
  }
}

FormGroup.prototype.setValueAndErrors = function(this: FormGroup, state: any, memberErrors: any): void {
  this.setValue(state);
}

Relaterte artikler