Asynkrone validatorer
Valider asynkront mot serveren.
Asynkrone validatorer er en gratis leksjon i Angular Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Angular Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Angular Academy inneholder totalt 4 leksjoner.
Validering som venter
Noe validering krever en server, for eksempel for å sjekke om et brukernavn er opptatt. Asynkrone validatorer returnerer et Promise eller en Observable som løses til et feilkart eller null.
Typen AsyncValidatorFn
En asynkron validator tar imot en kontroll og returnerer Observable<ValidationErrors | null> (eller et Promise).
const v: AsyncValidatorFn = (control) => {
return checkAvailable(control.value);
};null betyr gyldig
Løs til null når verdien er gyldig, eller til et feilobjekt som { taken: true } når den er ugyldig, akkurat som med synkrone validatorer.
En validator for brukernavn
Denne validatoren kaller en tjeneste og tilpasser resultatet.
usernameValidator(api: UserApi): AsyncValidatorFn {
return (control) =>
api.isTaken(control.value).pipe(
map(taken => taken ? { taken: true } : null)
);
}Registrere den
Asynkrone validatorer legges inn som det tredje argumentet til en kontroll, separat fra synkrone validatorer.
new FormControl('', {
validators: [Validators.required],
asyncValidators: [usernameValidator(api)]
});Tilstanden PENDING
Mens en asynkron validator kjører, er kontrollens status PENDING. Bruk dette til å vise en spinner.
@if (form.controls.username.pending) {
<span>Checking...</span>
}Debounce forespørsler
Asynkrone validatorer utløses ved hver verdiendring. Bruk debounce for å unngå å overbelaste serveren.
return timer(300).pipe(
switchMap(() => api.isTaken(control.value)),
map(taken => taken ? { taken: true } : null)
);switchMap avbryter foreldede kall
Ved å bruke switchMap avbrytes den forrige pågående forespørselen når verdien endres igjen, slik at bare det nyeste resultatet er relevant.
Strategien updateOn
Angi updateOn: 'blur' slik at asynkron validering bare kjøres når brukeren forlater feltet. Dette reduserer antallet forespørsler.
new FormControl('', {
asyncValidators: [usernameValidator(api)],
updateOn: 'blur'
});Lese feilen
Vis feilen når valideringen er ferdig og kontrollen er endret eller berørt.
@if (form.controls.username.hasError('taken')) {
<span>Username already taken</span>
}Beste praksis
Bruk alltid debounce, avbryt foreldede forespørsler, vis en indikator for pågående validering, og håndter nettverksfeil slik at skjemaet ikke blir stående i PENDING.
Hurtigsjekk
Test forståelsen Deres av asynkrone validatorer.
Oppsummering
De har lært at AsyncValidatorFn returnerer en Observable eller et Promise med ValidationErrors | null, registreres som kontrollens tredje argument og setter kontrollen i PENDING. Bruk debounce og switchMap til å håndtere serverkall.
Lær deg HTML med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 38
- Leksjoner
- 144
Ofte stilte spørsmål
Er leksjonen «Asynkrone validatorer» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Angular Academy, inkludert «Asynkrone validatorer», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Angular Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Asynkrone validatorer»?
Valider asynkront mot serveren. Du øver på Angular Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Angular Academy?
Ingen tidligere erfaring er nødvendig. Angular Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Asynkrone validatorer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Angular Academy-leksjonen?
Ja. Alle Angular Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Typede reaktive skjemaer
- FormArray og dynamiske felt
- Asynkrone validatorer
- FormBuilder-mønstre