Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Komponent- och Mallinteraktion i Angular | Components and Templates
Introduktion till Angular

bookKomponent- och Mallinteraktion i Angular

Du har redan bekantat dig med grundläggande typer av databindning. Nu ska vi titta på hur dessa tillämpas i praktiken när vi arbetar med TaskComponent.

Uppgiftsstruktur

Vår uppgiftskomponent kommer att visa uppgiftens titel samt två knappar: en för att ändra uppgiftens status (från "Complete" till "Undo") och en annan för att ta bort uppgiften. Här är den HTML-struktur som kommer att användas:

template.html

template.html

style.css

style.css

copy

Stilarna har redan definierats. Du kan granska dem genom att byta till filen style.css.

Komponentimplementering

Vår komponent kommer att arbeta med ett task-objekt, som lagrar information om uppgiften, såsom dess id, title och completed-status. Vi definierar detta objekt i komponentklassen:

export class TaskComponent {
  task = { id: 1, title: 'Buy groceries', completed: false };
}

Vi kan visa dessa data i komponentens HTML-mall.

Använda komponentdata i mallen

För att visa data från task-objektet refererar vi helt enkelt till dess egenskaper direkt i mallen. Till exempel, för att visa uppgiftens titel:

<div class="task-title">{{ task.title }}</div>

Om uppgiften är slutförd ska knappens text ändras. Vi kan använda en ternär operator för att justera knappens text baserat på värdet av task.completed.

<button class="complete">
  {{ task.completed ? 'Undo' : 'Complete' }}
</button>

Om task.completed är true visas "Undo" som knapptext, annars visas "Complete". På så sätt anpassas knappens text dynamiskt efter det aktuella tillståndet för task.

Lägga till dynamiska klasser med egenskapsbindning

Nu ska vi lägga till möjligheten att ändra utseendet på uppgiften baserat på dess tillstånd. Vi använder egenskapsbindning för att villkorligt tillämpa en CSS-klass:

<div class="task" [class.completed]="task.completed">

Detta innebär: om task.completed är true, kommer klassen completed att läggas till på elementet. Annars kommer klassen inte att tillämpas.

Som resultat, när uppgiften är slutförd, kommer det visuella utseendet att ändras: texten blir överstruken, färgen blir grå och bakgrunden ljusgrå. Alla dessa stilar definieras i CSS-klassen .completed, som jag beskrev ovan.

Händelsebindning till knappar

Nu ska vi binda händelser till knapparna så att lämpliga åtgärder utförs när knapparna klickas på. Vi har två knappar:

  • "Slutför" / "Ångra"-knappen — när den klickas på växlar den uppgiftens slutförandestatus;

  • "Ta bort"-knappen — när den klickas på tas uppgiften bort.

För att göra detta skapar vi två metoder i TaskComponent:

deleteTask() {
  // Method to delete the task. We'll implement it later.
}

toggleTask() {
  // Toggles the value of task.completed.
  this.task.completed = !this.task.completed;
}
  • Metoden deleteTask() kommer att förbli tom för tillfället eftersom vi ännu inte har någon uppgiftslista att ta bort objekt från;

  • Metoden toggleTask() växlar helt enkelt värdet på task.completed. Om uppgiften är markerad som slutförd (true), markeras den som ofullständig (false), och vice versa.

För att dessa metoder ska fungera när knapparna klickas på, behöver vi binda dem till knappens klickhändelser. Vi använder händelsebindning med click-händelsen för att lyssna på klick på knapparna och anropa motsvarande metoder.

template.html

template.html

copy

I detta exempel möjliggör händelsebindning att användarens handlingar kopplas till komponentens metoder. "Complete" / "Undo"-knappen anropar metoden toggleTask(), som växlar tillståndet för task.completed. Detta ändrar även knappens text från "Complete" till "Undo" beroende på uppgiftens status.

"Delete"-knappen anropar metoden deleteTask(), som för närvarande inte är implementerad, eftersom borttagning av uppgifter kommer att läggas till senare.

Nu har vi implementerat hela mallen för vår enkla uppgiftskomponent. Så här ser komponenten ut:

task.ts

task.ts

copy

Komponenten tillhandahåller data, och mallen står för den visuella representationen. Tillsammans skapar de ett interaktivt och användarvänligt gränssnitt för uppgifter, där data visas, utseendet förändras och knapparna anpassas efter uppgiftens status.

question mark

Vilka typer av databindning användes i TaskComponent?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 3.13

bookKomponent- och Mallinteraktion i Angular

Svep för att visa menyn

Du har redan bekantat dig med grundläggande typer av databindning. Nu ska vi titta på hur dessa tillämpas i praktiken när vi arbetar med TaskComponent.

Uppgiftsstruktur

Vår uppgiftskomponent kommer att visa uppgiftens titel samt två knappar: en för att ändra uppgiftens status (från "Complete" till "Undo") och en annan för att ta bort uppgiften. Här är den HTML-struktur som kommer att användas:

template.html

template.html

style.css

style.css

copy

Stilarna har redan definierats. Du kan granska dem genom att byta till filen style.css.

Komponentimplementering

Vår komponent kommer att arbeta med ett task-objekt, som lagrar information om uppgiften, såsom dess id, title och completed-status. Vi definierar detta objekt i komponentklassen:

export class TaskComponent {
  task = { id: 1, title: 'Buy groceries', completed: false };
}

Vi kan visa dessa data i komponentens HTML-mall.

Använda komponentdata i mallen

För att visa data från task-objektet refererar vi helt enkelt till dess egenskaper direkt i mallen. Till exempel, för att visa uppgiftens titel:

<div class="task-title">{{ task.title }}</div>

Om uppgiften är slutförd ska knappens text ändras. Vi kan använda en ternär operator för att justera knappens text baserat på värdet av task.completed.

<button class="complete">
  {{ task.completed ? 'Undo' : 'Complete' }}
</button>

Om task.completed är true visas "Undo" som knapptext, annars visas "Complete". På så sätt anpassas knappens text dynamiskt efter det aktuella tillståndet för task.

Lägga till dynamiska klasser med egenskapsbindning

Nu ska vi lägga till möjligheten att ändra utseendet på uppgiften baserat på dess tillstånd. Vi använder egenskapsbindning för att villkorligt tillämpa en CSS-klass:

<div class="task" [class.completed]="task.completed">

Detta innebär: om task.completed är true, kommer klassen completed att läggas till på elementet. Annars kommer klassen inte att tillämpas.

Som resultat, när uppgiften är slutförd, kommer det visuella utseendet att ändras: texten blir överstruken, färgen blir grå och bakgrunden ljusgrå. Alla dessa stilar definieras i CSS-klassen .completed, som jag beskrev ovan.

Händelsebindning till knappar

Nu ska vi binda händelser till knapparna så att lämpliga åtgärder utförs när knapparna klickas på. Vi har två knappar:

  • "Slutför" / "Ångra"-knappen — när den klickas på växlar den uppgiftens slutförandestatus;

  • "Ta bort"-knappen — när den klickas på tas uppgiften bort.

För att göra detta skapar vi två metoder i TaskComponent:

deleteTask() {
  // Method to delete the task. We'll implement it later.
}

toggleTask() {
  // Toggles the value of task.completed.
  this.task.completed = !this.task.completed;
}
  • Metoden deleteTask() kommer att förbli tom för tillfället eftersom vi ännu inte har någon uppgiftslista att ta bort objekt från;

  • Metoden toggleTask() växlar helt enkelt värdet på task.completed. Om uppgiften är markerad som slutförd (true), markeras den som ofullständig (false), och vice versa.

För att dessa metoder ska fungera när knapparna klickas på, behöver vi binda dem till knappens klickhändelser. Vi använder händelsebindning med click-händelsen för att lyssna på klick på knapparna och anropa motsvarande metoder.

template.html

template.html

copy

I detta exempel möjliggör händelsebindning att användarens handlingar kopplas till komponentens metoder. "Complete" / "Undo"-knappen anropar metoden toggleTask(), som växlar tillståndet för task.completed. Detta ändrar även knappens text från "Complete" till "Undo" beroende på uppgiftens status.

"Delete"-knappen anropar metoden deleteTask(), som för närvarande inte är implementerad, eftersom borttagning av uppgifter kommer att läggas till senare.

Nu har vi implementerat hela mallen för vår enkla uppgiftskomponent. Så här ser komponenten ut:

task.ts

task.ts

copy

Komponenten tillhandahåller data, och mallen står för den visuella representationen. Tillsammans skapar de ett interaktivt och användarvänligt gränssnitt för uppgifter, där data visas, utseendet förändras och knapparna anpassas efter uppgiftens status.

question mark

Vilka typer av databindning användes i TaskComponent?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5
some-alt