Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 830|Antwort: 0

[Kantig] Angular 18 Serie (32) ControlValueAccessor benutzerdefinierte Formularsteuerungen

[Link kopieren]
Veröffentlicht am 30.4.2025, 16:00:55 | | | |
Anforderungen: In der täglichen Frontend-Entwicklung werden Formulare häufig verwendet, um Daten durch Formulare hinzuzufügen und zu bearbeiten. Eine Instanz einer FormGroup kann eine Menge von FormControl-Instanzen verfolgen, und wenn eine FormGroup erstellt wird, kann jede Kontrolle darin nach ihrem Namen verfolgt werden. Wie kann ich eine Formularkontrolle anpassen?

Schauen wir uns zuerst die Renderings an:



Die Schritte sind wie folgt:

  • Erbt die ControlValueAccessor-Schnittstelle
  • Melden Sie sich bei einem NG_VALUE_ACCESSOR Anbieter an


Erbt die ControlValueAccessor-Schnittstelle

Die ControlValueAccessor-Schnittstelle definiert 4 Methoden wie folgt:

  • writeValue: Jede Wertaktion, die explizit die FormControl-API aufruft, ruft die writeValue()-Methode der benutzerdefinierten Formsteuerung auf und übergibt den neuen Wert als Parameter. Was es tut, ist, den Wert der native Formularsteuerung festzulegen. Der Datenfluss stammt aus der Angular-Form -> der nativen Form (benutzerdefinierte Steuerung).
  • registerOnChange: registriert das onChange-Ereignis, das bei der Initialisierung aufgerufen wird und eine Ereignisauslöserfunktion darstellt. Was ist der Nutzen dieser Ereignisauslöserfunktion? Zuerst müssen wir die Ereignisauslöserfunktion in registerOnChange speichern und sie aufrufen, wenn der richtige Zeitpunkt gekommen ist (zum Beispiel, wenn die Steuerung Benutzereingaben erhält und antworten muss). Man kann diese Funktion als "eine API verstehen, die vom Aufrufer verwendet wird, um die Kontrolle bei einer Änderung der Formulardaten in der Kontrolle zu benachrichtigen", also zur Synchronisierung der Informationen in der Steuerung. Der Parameter dieser Ereignisfunktion ist der Wert, den die Winkelform empfangen soll. Datenfluss aus der nativen Form (benutzerdefinierte Steuerung) > Angular-Form.
  • registerOnTouched: Registriert das onTouched-Ereignis, eine Rückruffunktion, die ausgelöst wird, wenn ein Benutzer mit einer Steuerung interagiert. Diese Funktion wird verwendet, um die Formularkontrolle zu benachrichtigen, dass sie bereits berührt wurde, um den internen Zustand des gebundenen FormContorl zu aktualisieren. Datenfluss aus der nativen Form (benutzerdefinierte Steuerung) > Angular-Form.
  • setDisabledState: Wenn sich der Formularzustand zu oder von DISABLED ändert, ruft die Form-API die setDisabledState()-Methode auf, um das entsprechende DOM-Element zu aktivieren oder zu deaktivieren. Der Datenfluss stammt aus der Angular-Form -> der nativen Form (benutzerdefinierte Steuerung).


Die Wechselwirkung ist unten dargestellt:



Tatsächlich haben native Formularsteuerungen auch Schnittstellen ähnlich wie ControlValueAccessor, zum Beispiel verwendet Angular, wenn es auf Eingabe- oder Textbereichs-DOM-native Steuerungen in Komponentenvorlagen trifft, den Befehl DefaultValueAccessor.

Accessor
Formelement
DefaultValueAccessor
Eingabe, Textbereich
CheckboxControlValueAccessor
input[type=Checkbox]
NumberValueAccessor
eingabe[type=number]
RadioControlValueAccessor
eingabe[type=radio]
RangeValueAccessor
Eingabe[Typ=Reichweite]
SelectControlValueAccessor
auswählen
SelectMultipleControlValueAccessor
select[multiple]


Das obige ist die Angular-Formularsteuerung, die Angular für alle nativen DOM-Formelemente erstellt hat, nämlich das integrierte ControlValueAccessor.

Dokumentation:Der Hyperlink-Login ist sichtbar.

Melden Sie sich bei einem NG_VALUE_ACCESSOR Anbieter an

Nach der Implementierung der ControlValueAccessor-Schnittstelle müssen wir sie außerdem als NG_VALUE_ACCESSOR registrieren, damit die benutzerdefinierte Formularsteuerung von Angular erkannt und integriert werden kann, sonst erhält sie den Fehler "RuntimeError: NG01203: No value accessor for Form Control name: 'xxx'".

Dokumentation:Der Hyperlink-Login ist sichtbar.

kodieren

Gemäß den Schritten ist die gesamte Codierungsarbeit, der Effekt ist das erste Rendering, der Code ist wie folgt.

HTML-Seite:

TS-Code:
Referenz:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.




Vorhergehend:Eine kurze Einführung in Reproducible Build
Nächster:Die maximale Varchar-Länge, die SQL Server für nicht-geclusterte Indizes erzeugt
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com