Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 830|Risposta: 0

[Angolare] Controlli personalizzati di forma ControlValueAccessor Angular 18 Series (32)

[Copiato link]
Pubblicato il 30-04-2025 16:00:55 | | | |
Requisiti: Nello sviluppo front-end quotidiano, i moduli sono spesso utilizzati per aggiungere e modificare dati tramite moduli. Un'istanza di un FormGroup può tracciare un insieme di istanze FormControl e, quando viene creato un FormGroup, ogni controllo al suo interno può essere tracciato dal proprio nome. Come posso personalizzare un controllo di modulo?

Diamo prima un'occhiata ai rendering:



I passaggi sono i seguenti:

  • Eredita l'interfaccia ControlValueAccessor
  • Registrati con un fornitore NG_VALUE_ACCESSOR


Eredita l'interfaccia ControlValueAccessor

L'interfaccia ControlValueAccessor definisce 4 metodi, come segue:

  • writeValue: Qualsiasi azione value che richiami esplicitamente l'API FormControl chiamerà il metodo writeValue() del controllo form personalizzato e passerà il nuovo valore come parametro. Quello che fa è impostare il valore del controllo del modulo nativo. Il flusso di dati proviene dalla forma angolare -> dalla forma nativa (controllo personalizzato).
  • registerOnChange: registra l'evento onChange, che viene chiamato all'inizializzazione ed è una funzione di attivazione dell'evento. A cosa serve questa funzione di attivazione degli eventi? Dobbiamo prima salvare la funzione di trigger dell'evento in registerOnChange e chiamarla quando è il momento giusto (ad esempio, quando il controllo riceve input dell'utente e deve rispondere). Puoi comprendere questa funzione come "un'API usata dal chiamante per notificare il controllo quando c'è un cambiamento nei dati del modulo nel controllo", cioè per sincronizzare le informazioni nel controllo. Il parametro di questa funzione evento è il valore che la forma angolare deve ricevere. Flusso di dati da forma nativa (controllo personalizzato) - > forma angolare.
  • registerOnTouched: Registra l'evento onTouched, che è una funzione di callback attivata quando un utente interagisce con un controllo. Questa funzione viene utilizzata per notificare al form control che è già stato toccato per aggiornare lo stato interno del FormContorl legato. Flusso di dati da forma nativa (controllo personalizzato) - > forma angolare.
  • setDisabledState: Quando lo stato del modulo cambia da o da DISABLED, l'API del modulo chiama il metodo setDisabledState() per abilitare o disabilitare l'elemento DOM corrispondente. Il flusso di dati proviene dalla forma angolare -> dalla forma nativa (controllo personalizzato).


L'interazione è mostrata di seguito:



Infatti, i controlli nativi dei moduli hanno anche interfacce simili a ControlValueAccessor; ad esempio, quando Angular incontra controlli nativi DOM di input o textarea nei template dei componenti, utilizzerà il comando DefaultValueAccessor.

Funzione
Elemento di forma
DefaultValueAccessor
input, area testo
Casella di controlloAccessoValore
input[type=casella di spunta]
NumberValueAccessor
input[tipo=numero]
RadioControlValueAccessor
input[tipo=radio]
RangeValueAccessor
input[tipo=raggio]
SelectControlControlValueAccessor
selezionare
SelectMultipleControlControlValueAccessor
seleziona[multiple]


Quanto sopra è il controllo della forma Angular che Angular ha creato per tutti gli elementi nativi della forma DOM, ovvero il ControlValueAccess integrato.

Documentazione:Il login del link ipertestuale è visibile.

Registrati con un fornitore NG_VALUE_ACCESSOR

Dopo aver implementato l'interfaccia ControlValueAccessor, dobbiamo anche registrarlo come NG_VALUE_ACCESSOR, così che il controllo personalizzato del modulo possa essere riconosciuto e integrato da Angular, altrimenti riceverà un errore "RuntimeError: NG01203: No value accessor per il nome del controllo del modulo: 'xxx'".

Documentazione:Il login del link ipertestuale è visibile.

codificare

Secondo i passaggi, il lavoro completo di codifica, l'effetto è il rendering iniziale, il codice è il seguente.

Pagina HTML:

Codice TS:
Riferimento:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.




Precedente:Una breve introduzione a Reproducible Build
Prossimo:La lunghezza massima varchar che SQL Server crea per indici non clusterizzati
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com