Örnek sorular
Angular Change DetectionZorluk 1
Klasik (zoneless olmayan) bir Angular uygulamasında Zone.js'in temel görevi nedir?
- aAsenkron API'leri (
setTimeout, DOM event'leri, Promise, XHR) monkey-patch ederek Angular'a ne zaman change detection çalıştıracağını bildirir✓ - bAngular'ın renderer'ının yerini tamamen alır, hız için framework'ün kendi view katmanını atlayıp doğrudan DOM node'larına yazar
- cTemplate'leri ve decorator'ları uygulama yayınlanmadan önce düz JavaScript'e çeviren, build zamanında çalışan bir derleyici adımıdır
- dAğ çağrılarını azaltmak için servisler ve component'ler arasında HTTP yanıtlarını önbelleğe alan bir interceptor katmanıdır
Açıklama:Zone.js, yaygın asenkron tarayıcı API'lerini yamanır. Bunlardan biri tetiklendiğinde (bir timer, bir event, çözülen bir promise), Zone.js Angular'a haber verir ve bir change detection turu tetiklenir — bu olmasaydı Angular'ın state değişmiş olabileceğine dair otomatik bir sinyali olmazdı.
Angular Change DetectionZorluk 1
Bir Angular ağacındaki her component açıkça ChangeDetectionStrategy.Eager (Angular 22 öncesindeki adıyla Default) kullanıyorsa, bir CD döngüsü hangi component'leri kontrol eder?
- aYalnızca bir önceki döngüden bu yana
@Input binding'i gerçekten değişmiş olan component'leri - bAğaçtaki her component'i, root'tan aşağıya doğru✓
- cYalnızca o an viewport'ta kaydırılarak görünür hale gelmiş component'leri
- dYalnızca root component'in kendisini, çocuklarını hiç dikkate almadan
Açıklama:Tamamı Eager olan bir ağaçta Angular, her CD döngüsünde component ağacını yukarıdan aşağıya dolaşır ve her view'ın template binding'lerini yeniden kontrol eder. Default, Eager için deprecated legacy alias'tır; Angular 22'den itibaren strateji belirtilmezse OnPush kullanıldığından soru her component'i açıkça Eager olarak sınırlar.
Angular Change DetectionZorluk 1
Tek cümleyle, ChangeDetectionStrategy.OnPush ne yapar?
- aComponent'i change detection'dan tamamen çıkarır, view'i ilk render edildiği haliyle donmuş kalır
- bComponent'i yalnızca stylesheet kuralları ya da CSS class'ları değiştiğinde yeniden kontrol eder
- cKontrolleri değişen input değeri, alt ağacındaki bir event, template'te okunan signal güncellemesi,
AsyncPipe ya da manuel bildirim gibi belirli tetikleyicilerle sınırlar✓ - dTüm uygulama için Zone.js'i devre dışı bırakır, artık hiçbir component otomatik asenkron bildirim almaz
Açıklama:OnPush, component'i change detection'dan çıkarmaz — NE ZAMAN kontrol edileceğini sınırlar. Değişen primitive input veya yeni nesne referansı; alt ağacındaki event, template'in tükettiği signal, AsyncPipe ve markForCheck() ya da detectChanges() gibi açık API'ler tetikleyici olabilir.
Angular Change DetectionZorluk 1
Bir Angular Signal (Angular 16+), temel düzeyde nedir?
- aAngular'ın var olan bir RxJS
Observable'a verdiği, tamamen aynı subscribe tabanlı API'ye sahip yeni bir isim - bYalnızca template'e özgü, hiçbir runtime nesnesi ya da değeri karşılığı olmayan bir syntax parçası
- cYalnızca
HttpClient isteklerinin önbelleklenmesini ve yeniden denemesini yapılandırmak için tanıtılmış özel bir API - dBir değeri saran, kimin okuduğunu izleyen, senkron ve reaktif bir wrapper — böylece değer değiştiğinde bağımlılar bilgilendirilebilir✓
Açıklama:Signal, bir değeri tutan hafif, senkron bir primitive'dir. Kod bir signal'ı okuduğunda (örn. bir computed içinde ya da template'te), Angular bu bağımlılığı kaydeder; böylece signal'ın değeri değiştiğinde tam olarak neyin güncelleneceğini bilir.
Angular Change DetectionZorluk 1
signal(0) ile oluşturulan bir signal'ın güncel değerini nasıl okursun?
- aFonksiyon olarak çağır:
mySignal()✓ - bBir ref gibi
.value property'sine eriş - cÜzerinde
.get() çağır - dDüz bir değişken gibi doğrudan oku, çağrıya gerek yok
Açıklama:Signal'lar çağrılabilirdir — mySignal() çağırmak güncel değeri döndürür ve eğer reaktif bir bağlam içinde (template, computed, effect) çağrılıyorsa ona bir bağımlılık kaydeder.
Angular Change DetectionZorluk 1
ChangeDetectorRef.markForCheck() çağırmak ne yapar?
- aComponent'i ve tüm alt ağacını, çağrıldığı anda hemen senkron olarak render eder
- bComponent'i (OnPush olsa bile) sıradaki change detection döngüsünde kontrol edilmesi gerektiğini işaretler✓
- cComponent'i CD ağacından çıkarır, tıpkı
detach() çağırmakla aynı etkiyi yaratır - dZone.js'e tüm uygulama genelinde ekstra bir global change detection döngüsü zamanlatıp çalıştırtır
Açıklama:markForCheck() change detection'ı kendisi çalıştırmaz — view'ı ve gerekli ata yolunu, daha sonraki bir change-detection taramasının ona ulaşıp kontrol edebilmesi için işaretler. Zoneless modda bu çağrı aynı zamanda Angular scheduler'ının bildirim kaynaklarından biridir; anında yerel kontrol yapan API detectChanges()'tir.