[[oktatas:web:angular|< Angular]] ====== Angular iteráció ====== * **Szerző:** Sallai András * Copyright (c) 2024, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Iteráció ===== A TypeScript fájlban létrehozott listákat, tömböket iterálhatjuk a HTML sablonban. ===== Lista iterálása ===== fruitList = [ "alma", "körte", "barack", "szilva" ] ===== Objektumlista iterálása ===== Legyen egy lista: employees = [ {id: 1, name: "Béla", city: "Szeged", salary: 392 }, {id: 2, name: "Dénes", city: "Szolnok", salary: 395 }, {id: 3, name: "Imre", city: "Szeged", salary: 397 }, ] Lista iterálása sablonban: @for(emp of employees; track emp.id) { }
Id Név Település Fieztés
{{emp.id}} {{emp.name}} {{emp.city}} {{emp.salary}}
===== Régi változat ===== A régebbi változat használatához importálnunk kell az NgFor modult //... import { NgFor } from '@angular/common'; @Component({ //.. imports: [NgFor], //.. }) ==== Gyümölcslista ==== Legyen például egy fruit nevű tömb: fruits = [ 'alma', 'körte', 'barack', 'szilva' ]; //... import { NgFor } from '@angular/common'; @Component({ //.. imports: [NgFor], //.. }) Iteráljuk a HTML sablonban: ==== Objektumlista iterálása ====

{{ task.id }} {{ task.name }}

=== Teljes példa === Ebben a példában dolgozókat szeretnénk listázni. Erre a célra létrehoztunk egy külön komponenst **first** néven. Külön komponens esetén a 17-s Angulartól importálni kell a CommondModule modult. import { Component, OnInit } from '@angular/core'; import { CommonModule } from '@angular/common'; @Component({ selector: 'app-first', standalone: true, imports: [CommonModule], templateUrl: './first.component.html', styleUrls: ['./first.component.css'] }) export class FirstComponent implements OnInit { employees!: Employee[]; constructor() { } ngOnInit(): void { this.employees = [ { name: "Parke Béla", salary: 2850000 }, { name: "Lenke Attila", salary: 2243500 }, { name: "Tron Ferenc", salary: 2150500 } ] } } interface Employee { name: string, salary: number } Az alábbi sorban, tettünk egy felkiáltójelet: employees!: Employee[]; Erre azért van szükség, hogy mert nem a konstruktorban inicializáljuk az objektumot, és fordítónak ezzel alapból problémája van. === Kiválasztással === Ez a példa megegyezik az előzővel, de hozzáadtunk egy kiválasztási lehetőséget. Bármelyik névre kattintunk, az megjelenik a lista alatt a "Kiválasztott" szöveg után. import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-first', templateUrl: './first.component.html', styleUrls: ['./first.component.css'] }) export class FirstComponent implements OnInit { employees!: Employee[]; selected!: string; constructor() { } ngOnInit(): void { this.employees = [ { name: "Parke Béla", salary: 2850000 }, { name: "Lenke Attila", salary: 2243500 }, { name: "Tron Ferenc", salary: 2150500 } ] } onClickEmployee(employee: Employee) { this.selected = employee.name; } } interface Employee { name: string, salary: number }

Kiválasztott: {{selected}}

=== Függvényhívás egy elemen === {{emp.name}}} {{valamiAtalakitoFuggveny(emp.city)}} A valamiAtalakitoFuggveny() csinál valamit a településsel majd visszaad valamit és az az érték kerül renderelésre.