Typer av Databinding i Angular
Når en komponent og dens mal samhandler, kan du overføre data og hendelser mellom dem på ulike måter. Dette kalles databinding.
I Angular finnes det fire typer databinding, som hver har sitt spesifikke formål.
La oss se på hvordan de fungerer ved å bruke en enkel oppgavekomponent som eksempel:
task-component.ts
Her oppretter vi et task-objekt med tre egenskaper: id, title og completed. Disse egenskapene beskriver en spesifikk oppgave—navnet og om den er fullført.
Interpolasjon
For eksempel, hvis du har en variabel som task.title, kan du omslutte den med {{ }}, og Angular vil gjengi verdien i HTML-en.
task-component.html
Når Angular prosesserer malen, finner den uttrykket {{ task.title }} og erstatter det med den nåværende verdien av task.title fra komponenten.
Hvis verdien er 'Buy groceries', er det akkurat det som vil vises inne i <h3>-taggen.
Den samme prosessen gjelder for alle andre verdier du interpolerer.
Dermed er interpolasjon enveis: data flyter fra komponenten til malen, og brukeren ser kun resultatet.
Egenskapsbinding
Noen ganger ønsker du ikke bare å vise tekst — du vil kontrollere elementets oppførsel, som å deaktivere en knapp, sette en bildekilde eller merke av i en avkrysningsboks.
Angular lar deg binde verdier til HTML-elementegenskaper ved å bruke hakeparenteser.
task-component.html
Tenk deg at oppgaven allerede er fullført (task.completed = true). I så fall ønsker vi at knappen skal være deaktivert. Når Angular ser [disabled]="task.completed", henter den verdien fra komponenten og binder den til DOM-elementets disabled-egenskap.
Hvis verdien er true, blir knappen deaktivert. Hvis den er false, forblir knappen aktiv.
Dette er igjen enveisbinding: data flyter fra komponenten til malen, og malen tilpasses basert på gjeldende tilstand for task-objektet.
Hendelsesbinding
For å få appen din til å reagere på brukerhandlinger (som klikk), tilbyr Angular hendelsesbinding. Når en bruker samhandler med et element, kan du "fange" den hendelsen og kalle en metode i komponenten din.
La oss legge til en metode i komponenten:
task-component.ts
Og oppdater malen:
task-component.html
Når brukeren klikker på knappen, registrerer Angular (click)-hendelsen og kaller toggleComplete()-metoden i komponenten. Denne metoden bytter verdien til task.completed.
Deretter gjengir Angular malen på nytt, og takket være interpolasjon ({{ task.completed ? 'Undo' : 'Complete' }}), oppdateres knappeteksten umiddelbart.
Her flyter data én vei — fra malen tilbake til komponenten (en handling sendes innover).
Toveis-binding
Noen ganger ønsker du at endringer i malen (for eksempel når du skriver i et inndatafelt) umiddelbart skal oppdatere komponenten — og at endringer i komponenten umiddelbart skal oppdatere malen.
Angular gjør dette enkelt med toveis-binding ved bruk av [(ngModel)].
Viktig: For å bruke [(ngModel)], må du importere FormsModule — som vist nedenfor:
task-component.ts
Her er malen:
task-component.html
Dette er stedet hvor magien med toveis binding skjer.
Når en bruker skriver i inndatafeltet, oppdaterer Angular automatisk task.title inne i komponenten. Og når task.title endres i komponenten, reflekterer Angular umiddelbart denne oppdateringen i inndatafeltet.
I motsetning til de andre typene binding, holder toveis binding komponenten og malen synkronisert til enhver tid.
Viktige forskjeller
Hver av disse bindingmetodene har sine egne egenskaper og egner seg best for ulike scenarier for datainteraksjon i en applikasjon.
1. Hvilken type databinding brukes for å vise verdien til en komponentvariabel i malen?
2. Hvilken type databinding lar deg oppdatere en komponentvariabel gjennom et skjema og holder den synkronisert med inndataelementet i malen?
3. Hvilken type databinding ville du brukt for å deaktivere en knapp når en oppgave er fullført?
4. Hvilken type databinding lar deg utløse en komponentmetode når en knapp klikkes?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain the differences between one-way and two-way data binding in Angular?
How do I decide which type of data binding to use in a specific scenario?
Can you give more examples of when to use each binding type?
Awesome!
Completion rate improved to 3.13
Typer av Databinding i Angular
Sveip for å vise menyen
Når en komponent og dens mal samhandler, kan du overføre data og hendelser mellom dem på ulike måter. Dette kalles databinding.
I Angular finnes det fire typer databinding, som hver har sitt spesifikke formål.
La oss se på hvordan de fungerer ved å bruke en enkel oppgavekomponent som eksempel:
task-component.ts
Her oppretter vi et task-objekt med tre egenskaper: id, title og completed. Disse egenskapene beskriver en spesifikk oppgave—navnet og om den er fullført.
Interpolasjon
For eksempel, hvis du har en variabel som task.title, kan du omslutte den med {{ }}, og Angular vil gjengi verdien i HTML-en.
task-component.html
Når Angular prosesserer malen, finner den uttrykket {{ task.title }} og erstatter det med den nåværende verdien av task.title fra komponenten.
Hvis verdien er 'Buy groceries', er det akkurat det som vil vises inne i <h3>-taggen.
Den samme prosessen gjelder for alle andre verdier du interpolerer.
Dermed er interpolasjon enveis: data flyter fra komponenten til malen, og brukeren ser kun resultatet.
Egenskapsbinding
Noen ganger ønsker du ikke bare å vise tekst — du vil kontrollere elementets oppførsel, som å deaktivere en knapp, sette en bildekilde eller merke av i en avkrysningsboks.
Angular lar deg binde verdier til HTML-elementegenskaper ved å bruke hakeparenteser.
task-component.html
Tenk deg at oppgaven allerede er fullført (task.completed = true). I så fall ønsker vi at knappen skal være deaktivert. Når Angular ser [disabled]="task.completed", henter den verdien fra komponenten og binder den til DOM-elementets disabled-egenskap.
Hvis verdien er true, blir knappen deaktivert. Hvis den er false, forblir knappen aktiv.
Dette er igjen enveisbinding: data flyter fra komponenten til malen, og malen tilpasses basert på gjeldende tilstand for task-objektet.
Hendelsesbinding
For å få appen din til å reagere på brukerhandlinger (som klikk), tilbyr Angular hendelsesbinding. Når en bruker samhandler med et element, kan du "fange" den hendelsen og kalle en metode i komponenten din.
La oss legge til en metode i komponenten:
task-component.ts
Og oppdater malen:
task-component.html
Når brukeren klikker på knappen, registrerer Angular (click)-hendelsen og kaller toggleComplete()-metoden i komponenten. Denne metoden bytter verdien til task.completed.
Deretter gjengir Angular malen på nytt, og takket være interpolasjon ({{ task.completed ? 'Undo' : 'Complete' }}), oppdateres knappeteksten umiddelbart.
Her flyter data én vei — fra malen tilbake til komponenten (en handling sendes innover).
Toveis-binding
Noen ganger ønsker du at endringer i malen (for eksempel når du skriver i et inndatafelt) umiddelbart skal oppdatere komponenten — og at endringer i komponenten umiddelbart skal oppdatere malen.
Angular gjør dette enkelt med toveis-binding ved bruk av [(ngModel)].
Viktig: For å bruke [(ngModel)], må du importere FormsModule — som vist nedenfor:
task-component.ts
Her er malen:
task-component.html
Dette er stedet hvor magien med toveis binding skjer.
Når en bruker skriver i inndatafeltet, oppdaterer Angular automatisk task.title inne i komponenten. Og når task.title endres i komponenten, reflekterer Angular umiddelbart denne oppdateringen i inndatafeltet.
I motsetning til de andre typene binding, holder toveis binding komponenten og malen synkronisert til enhver tid.
Viktige forskjeller
Hver av disse bindingmetodene har sine egne egenskaper og egner seg best for ulike scenarier for datainteraksjon i en applikasjon.
1. Hvilken type databinding brukes for å vise verdien til en komponentvariabel i malen?
2. Hvilken type databinding lar deg oppdatere en komponentvariabel gjennom et skjema og holder den synkronisert med inndataelementet i malen?
3. Hvilken type databinding ville du brukt for å deaktivere en knapp når en oppgave er fullført?
4. Hvilken type databinding lar deg utløse en komponentmetode når en knapp klikkes?
Takk for tilbakemeldingene dine!