Hangi zaman uyumsuz eyleminin ngZone'u tetiklediğini (Değişiklik Algılamayı sağlayan) nasıl bulabilirim?


11

Güncellemelerin yığın izlemesindeki herhangi bir değişiklik her zaman geri döner globalZoneAwareCallback. Değişimi neyin tetiklediğini nasıl öğrenirsiniz?

Hata ayıklama açısından net bir resim elde etmek iyidir.


Açıklamak ister misiniz?
user2167582

Sorunuz tamamen belirsiz!
nimeresam

@nimeresam Nasıl? Genel olarak katılıyorum, ama belirsiz mi?
user2167582

2
Soruyu güncelledim, umarım sana yardımcı olur
Stepan Suvorov

Yanıtlar:


31

globalZoneAwareCallbackzonejs içinde tüm olay geri çağrılarını işlemek için bildirilen bir işlevdir capture=false. (btw, çünkü capture=truevar globalZoneAwareCaptureCallback)

Bu, herhangi bir olay dinleyicisinin önce bu yöntemi uygulayacağı anlamına gelir. Bu dinleyici sayfaya Angular tarafından, sizin tarafınızdan veya herhangi bir üçüncü taraf kütüphanesi tarafından eklenebilir.

Angular'da tarayıcı etkinliklerini nasıl dinleyebileceğimizin birçok yolu vardır:

  • tarayıcı etkinliğine abone ol <element (event)="callback()">

  • @HostListener dekoratör @HostListener('event') callback() {}

  • Renderer2.listen yöntem

  • rxjs fromEvent

  • element özelliğini ata element.on<event> = callback

  • addEventListener yöntemi element.addEventListener(event, callback)(bu yöntem dahili olarak yukarıdaki diğer birçok şekilde kullanılır)

Bir kez bulunduğunuzda, tetiklenmesi gereken globalZoneAwareCallbacktüm Bölge görevlerine erişebilirsiniz .

Bir clickolayı dinlediğimizi düşünelim document.body:

document.body.addEventListener('click', () => {
   // some code
});

Net bir resim elde etmek için Chrome geliştirici araçlarını açalım:

resim açıklamasını buraya girin

Az önce keşfettiklerimiz:

  • her Bölge görevi kaynak içerir , bu nedenle değişikliği tetikleyen şey budur

  • target özelliği, hangi nesnenin değişikliği tetiklediğini gösterir

  • Geri arama özelliği bizi değişikliğin işleyicisine götürebilir

Başka bir örneği ele alalım ve Açısal yolu kullanarak tıklama etkinliği ekleyelim:

<h2 class="title" (click)="test()">Hello {{name}}</h2>

Bu h2öğeye tıkladıktan sonra aşağıdakilere dikkat etmeliyiz:

resim açıklamasını buraya girin

Şimdi geri arama özelliği bizi hemen geri aramaya getirmediği için sürpriz olabilir , testancak bunun yerine bazı sarıcı gösterdik @angular/platform-browser package. Ve diğer durumlarda da farklı olabilir ama ZoneTask.source o çünkü bu durumlarda gereken tüm özellik genellikle gösterir size değişimin temel nedenini .


Teşekkür ederim efendim, bu ödülün iki katına çıkabilseydim harika bir cevaptı.
user2167582
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.