📱
M335 - Mobile-Applikation realisieren
  • ▶️Intro
  • 🗓️Kursplanung & Organisation
  • 🛠️Infrastruktur und Tools
  • ❓FAQ
  • TAG 1
    • 📖Native, Hybrid, Web
    • 📖Frameworks
    • 📖Angular
    • 🦸‍♂️Tour of Heroes
      • 📖Introduction
      • 📖Create a project
      • 📖1. The hero editor
        • 💡Hinweise und Zusatzaufgaben zu Kapitel 1
      • 📖2. Display a list
        • 💡Hinweise und Zusatzaufgaben zu Kapitel 2
      • 📖3. Create a feature component
        • 💡Hinweise zu Kapitel 3
      • 📖4. Add services
        • 💡Hinweise zu Kapitel 4
      • 📖5. Navigation
        • 💡Hinweise und Zusatzaufgaben zu Kapitel 5
        • 💡Ergänzend zu Navigation
      • 💡 Debugging
    • 📖CSS / SASS / SCSS
  • Tag 2
  • 📖Ionic
  • ❓Ionic Projekt erstellen
  • 💡Ionic Übungen
  • 📖Usability
  • 📖Prototyping
  • 📖UI Elements
  • 🛠️ Projektsetup
  • Tag 3
    • 📖Native Grundlagen
    • 📖Capacitor Einführung
    • 💡App auf Gerät laufen lassen
    • 💡Native Komponente mit Capacitor verwenden
    • ❓Starten auf Gerät mit Live-Reload
  • 📖Persistenz
    • 📖Online Persistenz
    • 📖Offline Persistenz
  • Tag 4
    • 📖Testing
      • ❓Testplan: Praxisbeispiel
      • ❓Testprotokoll: Praxisbeispiel
  • Tag 5
    • 💡Build, Veröffentlichung, Ausblick
Powered by GitBook
On this page
  • Directives
  • @for
  • Event
  • 💡 Übung
  1. TAG 1
  2. Tour of Heroes
  3. 2. Display a list

Hinweise und Zusatzaufgaben zu Kapitel 2

Directives

@for

@for 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:

Im Kapitel 2 wird dir bereits die gesamte Liste HEROES angeboten, du kannst gerne diese verwenden.

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

Durch diese Liste können wir mit dem @for iterieren:

<h2>My Heroes</h2>
<ul class="heroes">
  @for(hero of HEROES; track hero.id) {
    <li>
      <button type="button">
        <span class="badge">{{hero.id}}</span>
        <span class="name">{{hero.name}}</span>
      </button>
    </li>
  }
</ul>

Mit der lokalen Deklaration (hero) 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 @if und zeigen die Details an, sofern ein selectedHero vorhanden ist.

@if(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.

💥
Previous2. Display a listNext3. Create a feature component

Last updated 5 months ago

🦸‍♂️
📖
💡