Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 830|Antwoord: 0

[Angular] Angular 18 Series (32) ControlValueAccessor aangepaste formuliercontroles

[Link kopiëren]
Geplaatst op 30-4-2025 16:00:55 | | | |
Eisen: In de dagelijkse front-end ontwikkeling worden formulieren vaak gebruikt om data toe te voegen en te bewerken via formulieren. Een instantie van een FormGroup kan een set FormControl-instanties volgen, en wanneer een FormGroup wordt aangemaakt, kan elke controle daarin worden gevolgd op basis van zijn naam. Hoe pas ik een formuliercontrole aan?

Laten we eerst naar de renderings kijken:



De stappen zijn als volgt:

  • Erft de ControlValueAccessor-interface
  • Registreer je bij een NG_VALUE_ACCESSOR aanbieder


Erft de ControlValueAccessor-interface

De ControlValueAccessor-interface definieert 4 methoden, als volgt:

  • writeValue: Elke waardeactie die expliciet de FormControl API aanroept, roept de writeValue()-methode van de aangepaste formuliercontrole aan en geeft de nieuwe waarde door als parameter. Wat het doet is de waarde van de native formuliercontrole bepalen. De datastroom komt uit Angular vorm -> Native vorm (aangepaste controle).
  • registerOnChange: registreert het onChange-event, dat bij initialisatie wordt aangeroepen en een event triggerfunctie is. Wat is het nut van deze gebeurtenistriggerfunctie? We moeten eerst de event trigger-functie opslaan in registerOnChange en deze oproepen wanneer het juiste moment is (bijvoorbeeld wanneer de besturing gebruikersinput ontvangt en moet reageren). Je kunt deze functie begrijpen als "een API die door de aanroeper wordt gebruikt om de controle te waarschuwen wanneer er een wijziging is in de formuliergegevens in de controle", dat wil zeggen, om de informatie in de controle te synchroniseren. De parameter van deze gebeurtenisfunctie is de waarde die de hoekvorm moet ontvangen. Datastroom vanuit Native vorm (aangepaste controle) - > Angular-vorm.
  • registerOnTouched: Registreert het onTouched-evenement, een callback-functie die wordt geactiveerd wanneer een gebruiker met een bedieningselement interacteert. Deze functie wordt gebruikt om de formuliercontrole te informeren dat deze al is aangeraakt om de interne status van de gebonden FormContorl bij te werken. Datastroom vanuit Native vorm (aangepaste controle) - > Angular-vorm.
  • setDisabledState: Wanneer de vormstatus verandert in of van DISABLED, roept de form-API de setDisabledState()-methode aan om het bijbehorende DOM-element in of uit te schakelen. De datastroom komt uit Angular vorm -> Native vorm (aangepaste controle).


De interactie wordt hieronder getoond:



Sterker nog, native vormbesturingselementen hebben ook interfaces vergelijkbaar met ControlValueAccessor; bijvoorbeeld, wanneer Angular invoer- of tekstgebied-native DOM-besturingen tegenkomt in componentsjablonen, gebruikt het het DefaultValueAccessor-commando.

Accessor
Vormelement
DefaultValueAccessor
invoer, tekstgebied
CheckboxControlValueAccessor
invoer[type=selectievakje]
NumberValueAccessor
input[type=number]
RadioControlValueAccessor
input[type=radio]
RangeValueAccessor
input[type=range]
SelectControlValueAccessor
selecteren
SelectMultipleControlValueAccessor
select[meerdere]


Bovenstaande is de Angular-vormcontrole die Angular heeft gemaakt voor alle native DOM-vormelementen, namelijk de ingebouwde ControlValueAccessor.

Documentatie:De hyperlink-login is zichtbaar.

Registreer je bij een NG_VALUE_ACCESSOR aanbieder

Na het implementeren van de ControlValueAccessor-interface moeten we deze ook als een NG_VALUE_ACCESSOR registreren, zodat de aangepaste formuliercontrole herkend en geïntegreerd kan worden door Angular, anders krijgt het een foutmelding "RuntimeError: NG01203: No value accessor for form control name: 'xxx'".

Documentatie:De hyperlink-login is zichtbaar.

coderen

Volgens de stappen is het volledige codeerwerk, het effect is de initiële rendering, de code is als volgt.

HTML-pagina:

TS-code:
Referentie:

De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.




Vorig:Een korte introductie tot Reproducible Build
Volgend:De maximale varchar-lengte die SQL Server creëert voor niet-geclusterde indexen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com