📖2. Display a List

Directives

ngFor

ngFor ermöglicht dir durch Listen, Arrays, Sets, ... zu iterieren und auf die einzelnen Elemente darin zugreifen zu können. Dazu brauchst du zu Beginn eine Liste über welche du iterieren kannst. Dafür erstellt du Mock-Daten als Array:

Vergiss hier nicht die Superkräfte hinzuzufügen, ansonsten wird dir der Compiler Fehler melden 😉.

export const HEROES: Hero[] = [
  { id: 12, name: 'Dr. Nice' },
  { id: 13, name: 'Bombasto' },
  ...
];

Durch diese Liste können wir mit dem ngFor iterieren:

<h2>My Heroes</h2>
<ul class="heroes">
  <li *ngFor="let hero of HEROES">
    <button type="button">
      <span class="badge">{{hero.id}}</span>
      <span class="name">{{hero.name}}</span>
    </button>
  </li>
</ul>

Mit der lokalen Deklaration (let) erstellst du zur Laufzeit für jeden Eintrag in der Liste ein Hero-Objekt. Anschliessend hast du dann in jedem Listen Eintrag Zugriff auf das dazugehörige Hero Objekt.

Event

In diesem Tutorial lernst du den (click) Event kennen. Dieses Event handelt den Fall ab, wenn du auf ein Element klickst (selbstredend nicht?). In angular gibt es unzählige Events welche du abhandeln kannst, du wirst im Verlaufe des Projekt noch mit einigen in Kontakt kommen.

Solche Events kannst du an Methoden binden, das sehen wir uns im folgenden Beispiel an:

<button type="button" (click)="onSelect(hero)">
selectedHero?: Hero;
onSelect(hero: Hero): void {
  this.selectedHero = hero;
}

Beim Klick auf den button wird die Funktion onSelect ausgeführt.

Im nächsten Schritt verwenden wir *ngIf und zeigen die Details an, sofern ein selectedHero vorhanden ist.

<div *ngIf="selectedHero">

💡 Übung

Cool du kannst nun Helden auflisten und auf Klick die Details anzeigen. Jedoch kann es sein, dass die Superkräfte eines Helden noch nicht definiert wurde bzw. null oder undefined ist.

Falls eine Superkraft definiert ist, soll in der Auflistung nebst dem Namen ein 💥-Emoji angezeigt werden.

  1. Markiere die "Superkraft" Property als Optional

  2. Überprüfe in der Auflistung ob die Superkraft erfasst wurde und falls ja, zeige das emoji an.

💥

Last updated