Angular'ın en çok kullanılan iki yapısal directive'i *ngIf ve *ngFor ile koşullu render ve liste render nasıl yapılır? Klasik sözdizimin yanında Angular 17+ ile gelen yeni @if / @for control flow'unu da örneklerle inceliyoruz.
22 Nisan 2026 3 dk okuma 18 0
Merhaba arkadaşlar, bu makalemizde Angular'ın template içerisinde en çok kullandığımız iki yapısal directive'i inceliyor olacağız: *ngIf ve *ngFor. Bu ikili sayesinde HTML'imizi koşullara göre değiştirebiliyor, liste şeklindeki verileri ekrana rahatça basabiliyoruz.
Directive Nedir?
Directive, Angular'ın HTML'e ekstra özellikler kazandıran yapısıdır. İki çeşidi var: yapısal (structural) directive'ler DOM'u şekillendirirler (örneğin bir elementi ekleyip kaldırabilirler) ve öznitelik (attribute) directive'ler bir elementin görünümünü ya da davranışını değiştirirler. Bu makalede yapısal olanlara odaklanacağız.
*ngIf — Koşullu Render *ngIf, kendisine verilen ifade true ise elementi DOM'a ekler, false ise DOM'dan komple kaldırır. Bu önemli bir ayrıntı: sadece gizlemek (display: none) değil, elementi hiç oluşturmaz. Yani performans açısından da güzel bir davranış.
IDE tarafinda: VS Code tarafinda *ngIf ve *ngFor icin Angular Language Service hata kontrolu yapiyor; item degiskeninin tipi otomatik cikariliyor. Formatter Ctrl+Shift+F ile HTML template'i guzelce hizaliyor.
else Template ile Alternatif Gösterme
Klasik *ngIf sözdiziminde else bloğu tanımlamak için ng-template kullanılır:
Yeni sözdiziminde track zorunlu, performans için. Angular her render'da hangi öğenin değiştiğini bu track anahtarı ile belirliyor. @@empty bloğu ise liste boş geldiğinde çok işe yarıyor.
Index, First, Last ve Daha Fazlası *ngFor bize döngü sırasında extra bilgiler de verir: index, first, last, even, odd gibi. Örneğin:
<ul>
<li *ngFor="let yazi of yazilar; let i = index; let ilk = first"
[class.on-plani]="ilk">
{{ i + 1 }}. {{ yazi.baslik }}
</li>
</ul>
Gerçek Hayattan Bir Örnek
Yüklenme durumunu, boş listeyi ve dolu listeyi birlikte ele alan küçük bir component yapalım:
Özet *ngIf (veya @@if) ile koşullu render, *ngFor (veya @@for) ile liste render yapmayı öğrendik. Bu iki directive'i kombinleyerek zengin template'ler oluşturabiliyoruz. Bir sonraki makalede Angular'ın en önemli kavramlarından biri olan Service ve Dependency Injection'a değineceğiz ve API'den veri çekmeyi göreceğiz. Kolay gelsin...