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.
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.
Yanıtlar:
globalZoneAwareCallback
zonejs içinde tüm olay geri çağrılarını işlemek için bildirilen bir işlevdir capture=false
. (btw, çünkü capture=true
var 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 globalZoneAwareCallback
tüm Bölge görevlerine erişebilirsiniz .
Bir click
olayı 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:
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:
Şimdi geri arama özelliği bizi hemen geri aramaya getirmediği için sürpriz olabilir , test
ancak 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 .