Skip to content

Giriş

  • Angular nedir?
  • Temel Bilgiler
    • Genel Bakış
    • Bileşenler
    • Dinamik Verileri Yönetme
    • Dinamik Şablonları Oluşturma
    • Koşullu İfadeler ve Döngüler
    • Kullanıcı Etkileşimini Yönetme
    • Kod Paylaşımı

Kapsamlı Kılavuzlar

  • Component
    • Bir Componentin Anatomisi
    • Component’leri İçe Aktarma ve Kullanma
    • Component Seçiciler
    • Stil Componentleri
    • Input Özelliklerine Sahip Verileri Kabul Etme
    • Outputları Olan Özel Etkinlikler
    • Ng-content ile İçerik Projeksiyonu
    • Component Ana Öğeleri
    • Component Yaşam Döngüsü
    • Sorgularla Bileşen Alt Öğelerine Başvurma
    • DOM API’lerini Kullanma
    • Inheritance
    • Bileşenleri Programlı Olarak Oluşturma
    • Gelişmiş Bileşen Yapılandırması
  • Şablon Sözdizimi
    • Genel Bakış
    • Text Interpolation
    • Template Statements
    • Bağlamayı Anlama
    • Property Binding
    • En İyi Property Binding Kullanımları
    • Öznitelik Bağlama
    • Sınıf ve stil bağlama
    • Olay Bağlama
    • İki Yönlü Bağlama
    • Yerleşik Kontrol Akışı
    • Şablon Değişkenlerini Anlama
    • Şablon Olarak SVG
  • Directives
    • Directives
    • Öznitelik yönergeleri
    • Yapısal Direktifler
    • API Direktif Bileşimi

Bağımlılık Enjeksiyonu

  • Genel Bakış
  • Başlangıç
  • Dokümanlar
  • Kapsamlı Kılavuzlar
  • Şablon Sözdizimi
  • Yerleşik Kontrol Akışı

Yerleşik Kontrol Akışı

Angular şablonları, öğeleri koşullu olarak göstermenizi, gizlemenizi ve tekrarlamanızı sağlayan kontrol akışı bloklarını destekler.

@if blok koşulluları #

@if bloğu, koşul ifadesi doğru olduğunda içeriğini koşullu olarak görüntüler:

@if (a > b) {
{{a}} is greater than {{b}}
}

@if bloğu bir veya daha fazla ilişkili @else bloğuna sahip olabilir. Bir @if bloğundan hemen sonra, isteğe bağlı olarak istediğiniz sayıda @else if bloğu ve bir @else bloğu belirtebilirsiniz:

@if (a > b) {
{{a}} is greater than {{b}}
} @else if (b > a) {
{{a}} is less than {{b}}
} @else {
{{a}} is equal to {{b}}
}

Koşullu ifadenin sonucuna başvurma #

Yeni yerleşik @if koşullu, yaygın kodlama kalıpları için bir çözüm sağlamak üzere ifade sonuçlarının referanslanmasını destekler:

@if (users$ | async; as users) {
{{ users.length }}
}

@for blok – tekrarlayıcılar #

@for, bir koleksiyondaki her öğe için bir bloğun içeriğini tekrar tekrar oluşturur. Koleksiyon herhangi bir JavaScript  iterable olarak gösterilebilir, ancak normal bir Array kullanmanın performans avantajları vardır. Temel bir @for döngüsü şöyle görünür:

@for (item of items; track item.id) {
{{ item.name }}
}

iki koleksiyonun farkını hesaplamak için track #

Track ifadesinin değeri, dizi öğelerini DOM’daki görünümlerle ilişkilendirmek için kullanılan bir anahtar belirler. Öğe kimliğinin net bir şekilde belirtilmesi, Angular’ın bir koleksiyona öğeler eklendiğinde, kaldırıldığında veya taşındığında minimum DOM işlemleri kümesini yürütmesine olanak tanır.

Track‘i etkili bir şekilde kullanmak, özellikle veri koleksiyonları üzerindeki döngülerde uygulamanızın performansını önemli ölçüde artırabilir.

Değişikliğe uğramayan koleksiyonlar için (hiçbir öğe taşınmaz, eklenmez veya silinmez) track $index kullanmak verimli bir stratejidir. Değişken verilere veya sık değişikliklere sahip koleksiyonlar için, track ifadeniz olarak kullanmak üzere her bir öğeyi benzersiz şekilde tanımlayan bir özellik seçin.

Değişmez veri yapıları ile nesne kimliğini bir izleme anahtarı olarak kullandığınızda artan DOM yeniden oluşturma potansiyeline dikkat edin, çünkü bu gereksiz performans maliyetlerine yol açabilir.

@index ve diğer bağlamsal değişkenler #

@for içeriği içinde, birkaç örtük değişken her zaman kullanılabilir:

DeğişkenAnlamı
$countÜzerinde yinelenen koleksiyondaki öğe sayısı
$indexGeçerli satırın dizini
$firstGeçerli satırın ilk satır olup olmadığı
$lastGeçerli satırın son satır olup olmadığı
$evenGeçerli satır dizininin çift olup olmadığı
$oddGeçerli satır dizininin tek olup olmadığı

Bu değişkenler her zaman bu adlarla kullanılabilir, ancak bir @let segmenti aracılığıyla takma ad verilebilir:

@for (item of items; track item.id; let idx = $index, e = $even) {
Item #{{ idx }}: {{ item.name }}
}

Takma ad özellikle bağlamsal değişken adlarının çakışabileceği iç içe @for bloklarının kullanılması durumunda kullanışlıdır.

empty blok #

İsteğe bağlı olarak @for blok içeriğinden hemen sonra bir @empty bölümü ekleyebilirsiniz. Öğe olmadığında @empty bloğunun içeriği görüntülenir:

@for (item of items; track item.name) {
<li> {{ item.name }}</li>
} @empty {
<li> There are no items.</li>
}

@switch bloğu – seçim #

switch‘in sözdizimi if‘e çok benzer ve JavaScript switch deyiminden esinlenilmiştir:

@switch (condition) {
@case (caseA) {
Case A.
}
@case (caseB) {
Case B.
}
@default {
Default case.
}
}

Koşullu ifadenin değeri, === operatörü kullanılarak durum ifadesiyle karşılaştırılır.

@switch, fallthrough özelliğine sahip olmadığı için, bir break veya return ifadesine eşdeğer bir değere ihtiyacınız yok.

@Default bloğu isteğe bağlıdır ve atlanabilir. Hiçbir @case ifadeyle eşleşmiyorsa ve @default bloğu yoksa hiçbir şey gösterilmez.

Yerleşik kontrol akışı ve NgIf, NgSwitch ve NgFor yapısal yönergeleri #

@if bloğu, UI’nin koşullu kısımlarını ifade etmek için *ngIf‘in yerine geçer.

@Switch bloğu ngSwitch‘in yerini alarak büyük avantajlar sağlar:

  • koşul ifadesini veya her bir koşullu şablonu tutmak için bir kapsayıcı öğe gerektirmez;
  • her bir dal içinde tip daraltma dahil olmak üzere şablon tip kontrolünü destekler.

@for bloğu döngü için *ngFor‘un yerine geçer ve yapısal direktifi NgFor‘dan farklı birkaç özelliğe sahiptir.

  • izleme ifadesi (nesne kimliklerine karşılık gelen anahtarların hesaplanması) zorunludur ancak daha iyi ergonomiye sahiptir (trackBy yöntemini oluşturmak yerine bir ifade yazmak yeterlidir);
  • Angular’ın özelleştirilebilir diffing uygulaması (IterableDiffer) yerine, bir koleksiyondaki değişikliklere yanıt olarak gerçekleştirilecek minimum sayıda DOM işlemini hesaplamak için yeni bir optimize edilmiş algoritma kullanır;
  • @empty bloklar için desteğe sahiptir.

Track ayarı, NgFor‘un trackBy fonksiyonu kavramının yerini alır. Çünkü @for yerleşiktir, trackBy işlevini geçirmekten daha iyi bir deneyim sağlayabilir ve bunun yerine doğrudan anahtarı temsil eden bir ifade kullanabiliriz. trackBy fonksiyonunu çağırarak trackBy‘den track‘e geçiş yapmak mümkündür:

@for (item of items; track itemId($index, item)) {
{{ item.name }}
}
Neler hissediyorsun?
Share This Article :
  • Facebook
  • Twitter
  • LinkedIn
  • Pinterest
Hala sıkışık? Nasıl yardımcı olabiliriz?

Nasıl yardımcı olabiliriz?

Updated on 24 March 2024
İki Yönlü Bağlama

Powered by BetterDocs

İçindekiler
  • @if blok koşulluları
  • Koşullu ifadenin sonucuna başvurma
  • @for blok - tekrarlayıcılar
  • iki koleksiyonun farkını hesaplamak için track
  • @index ve diğer bağlamsal değişkenler
  • empty blok
  • @switch bloğu - seçim
  • Yerleşik kontrol akışı ve NgIf, NgSwitch ve NgFor yapısal yönergeleri
Angular TR

Tüm hakları saklıdır