Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 830|Odpowiedź: 0

[Angular] Angular 18 Series (32) ControlValueOr niestandardowe kontrole formularzy

[Skopiuj link]
Opublikowano 30.04.2025 16:00:55 | | | |
Wymagania: W codziennym tworzeniu front-endu formularze często służą do dodawania i edytowania danych poprzez formularze. Instancja FormGroup może śledzić zestaw instancji FormControl, a gdy FormGroup zostanie utworzona, każda kontrolka w niej może być śledzona według nazwy. Jak dostosować kontrolkę formy?

Przyjrzyjmy się najpierw wizualizacjom:



Kroki są następujące:

  • Dziedziczy interfejs ControlValueAccessor
  • Zarejestruj się u dostawcy NG_VALUE_ACCESSOR


Dziedziczy interfejs ControlValueAccessor

Interfejs ControlValueAccessor definiuje 4 metody, w następujący sposób:

  • writeValue: Każda akcja wartości, która jawnie wywołuje FormControl API, wywołuje metodę writeValue() niestandardowego sterowania formularzem i przekazuje nową wartość jako parametr. Ustawia wartość natywnego sterowania formą. Przepływ danych pochodzi z formy Angular -> natywnej formy (kontrola niestandardowa).
  • registerOnChange: rejestruje zdarzenie onChange, które jest wywoływane podczas inicjalizacji i jest funkcją wyzwalającą zdarzenie. Jaki jest sens tej funkcji wyzwalającej zdarzenie? Najpierw musimy zapisać funkcję wyzwalania zdarzenia w registerOnChange i wywołać ją, gdy nadejdzie odpowiedni czas (na przykład, gdy kontrola otrzyma dane użytkownika i musi odpowiedzieć). Można tę funkcję rozumieć jako "API używane przez wywołującego do powiadomienia kontrolera o zmianie danych formularza w sterze", czyli synchronizacji informacji w sterence. Parametrem tej funkcji zdarzenia jest wartość, którą ma otrzymać forma kątowa. Przepływ danych z natywnej formy (niestandardowa kontrola) > Forma kątowa.
  • registerOnTouched: Rejestruje zdarzenie onTouched, które jest funkcją callback wyzwalaną podczas interakcji użytkownika z kontrolką. Funkcja ta służy do powiadomienia kontrolera formularza, że jest już dotknięty, aby zaktualizować wewnętrzny stan powiązanego FormContorl. Przepływ danych z natywnej formy (niestandardowa kontrola) > Forma kątowa.
  • setDisabledState: Gdy stan formularza zmienia się na lub z DISABLED, API formularza wywołuje metodę setDisabledState(), aby włączyć lub wyłączyć odpowiadający element DOM. Przepływ danych pochodzi z formy Angular -> natywnej formy (kontrola niestandardowa).


Interakcja jest przedstawiona poniżej:



W rzeczywistości natywne kontrole form mają również interfejsy podobne do ControlValueAccessor, na przykład gdy Angular napotka natywne kontrole DOM wejściowe lub tekstowe w szablonach komponentów, użyje polecenia DefaultValueAccessor.

Akcesor
Element formy
DefaultValueAccessor
input,textarea
CheckboxControlValueAccessor
input[type=checkbox]
NumberValueAccessor
input[type=number]
RadioControlValueAccessor
input[type=radio]
RangeValueAccessor
input[type=range]
SelectControlValueAccessor
wybrać
SelectMultipleControlValueAccessor
select[multiple]


Powyższa to kontrola formularza Angular, którą Angular stworzył dla wszystkich natywnych elementów formularza DOM, mianowicie wbudowanego ControlValueAccessor.

Dokumentacja:Logowanie do linku jest widoczne.

Zarejestruj się u dostawcy NG_VALUE_ACCESSOR

Po wdrożeniu interfejsu ControlValueAccessor musimy również zarejestrować go jako NG_VALUE_ACCESSOR, aby niestandardowa kontrola formularza mogła być rozpoznawana i zintegrowana przez Angular, w przeciwnym razie pojawi się błąd "RuntimeError: NG01203: No value accessor for form control name: 'xxx'".

Dokumentacja:Logowanie do linku jest widoczne.

kodować

Zgodnie z etapami, kompletną pracą kodową, efektem jest początkowe renderowanie, kod wygląda następująco.

Strona HTML:

Kod TS:
Odniesienie:

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.




Poprzedni:Krótkie wprowadzenie do Reproducible Build
Następny:Maksymalna długość varchar, którą SQL Server tworzy dla indeksów nieklastrowanych
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com