Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 830|Svar: 0

[Kantet] Angular 18 Series (32) ControlValueAccessor brugerdefinerede formularkontroller

[Kopier link]
Opslået den 30-4-2025 kl. 16:00:55 | | | |
Krav: I daglig front-end udvikling bruges formularer ofte til at tilføje og redigere data gennem formularer. En instans af en FormGroup kan spore et sæt FormControl-instanser, og når en FormGroup oprettes, kan hver kontrol i den spores efter sit navn. Hvordan tilpasser jeg en formularkontrol?

Lad os først se på renderingerne:



Trinene er som følger:

  • Arver ControlValueAccessor-grænsefladen
  • Registrer dig hos en NG_VALUE_ACCESSOR udbyder


Arver ControlValueAccessor-grænsefladen

ControlValueAccessor-grænsefladen definerer 4 metoder, som følger:

  • writeValue: Enhver værdihandling, der eksplicit kalder FormControl API'en, vil kalde writeValue()-metoden for den brugerdefinerede formkontrol og sende den nye værdi ind som en parameter. Det den gør, er at sætte værdien af den native formularkontrol. Dataflowet kommer fra Angular form -> Native form (brugerdefineret kontrol).
  • registerOnChange: registrerer onChange-begivenheden, som kaldes ved initialisering og er en begivenhedstriggerfunktion. Hvad er formålet med denne begivenhedsudløserfunktion? Vi skal først gemme event trigger-funktionen i registerOnChange og kalde den, når tiden er inde (for eksempel når kontrollen modtager brugerinput og skal svare). Du kan forstå denne funktion som "et API, der bruges af kalderen til at underrette kontrollen, når der sker en ændring i formulardataene i kontrollen", altså til at synkronisere informationen i kontrollen. Parameteren for denne begivenhedsfunktion er den værdi, som den vinkelformede form skal modtage. Dataflow fra Native form (brugerdefineret kontrol) -> Angular form.
  • registerOnTouched: Registrerer onTouched-begivenheden, som er en callback-funktion, der udløses, når en bruger interagerer med en kontrol. Denne funktion bruges til at underrette formularkontrollen om, at den allerede er berørt for at opdatere den interne tilstand af den bundne FormContorl. Dataflow fra Native form (brugerdefineret kontrol) -> Angular form.
  • setDisabledState: Når formens tilstand ændres til eller fra DISABLED, kalder formular-API'en metoden setDisabledState() for at aktivere eller deaktivere det tilsvarende DOM-element. Dataflowet kommer fra Angular form -> Native form (brugerdefineret kontrol).


Interaktionen vises nedenfor:



Faktisk har native formkontroller også grænseflader, der ligner ControlValueAccessor, for eksempel når Angular møder input- eller tekstområde-DOM-native kontroller i komponentskabeloner, vil den bruge kommandoen DefaultValueAccessor.

Accessor
Formelement
DefaultValueAccessor
input, tekstområde
CheckboxControlValueAccessor
input[type=afkrydsningsboks]
NumberValueAccessor
input[type=number]
RadioControlValueAccessor
input[type=radio]
RangeValueAccessor
input[type=område]
SelectControlValueAccessor
markere
SelectMultipleControlValueAccessor
select[flere]


Ovenstående er Angular-formkontrollen, som Angular har skabt for alle native DOM-formelementer, nemlig den indbyggede ControlValueAccessor.

Dokumentation:Hyperlink-login er synlig.

Registrer dig hos en NG_VALUE_ACCESSOR udbyder

Efter implementering af ControlValueAccessor-grænsefladen skal vi også registrere den som en NG_VALUE_ACCESSOR, så den brugerdefinerede formularkontrol kan genkendes og integreres af Angular, ellers får den en fejl "RuntimeError: NG01203: No value accessor for form control name: 'xxx'".

Dokumentation:Hyperlink-login er synlig.

Indkode

Ifølge trinene er det hele kodningsarbejde, effekten er den indledende rendering, koden er som følger.

HTML-side:

TS-kode:
Henvisning:

Hyperlink-login er synlig.
Hyperlink-login er synlig.




Tidligere:En kort introduktion til Reproducerbar Build
Næste:Den maksimale varchar-længde, som SQL Server skaber for ikke-klyngede indekser
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com