Bu resmi belgeleri kontrol ettiniz mi?
HostListener - Bir ana bilgisayar dinleyicisi bildirir. Açısal, ana makine öğesi belirtilen olayı yayınladığında dekore edilmiş yöntemi çağırır.
@HostListener
- beyan edilen ana makine öğesinin yaydığı etkinliği dinler @HostListener
.
HostBinding - Bir host özelliği bağlama bildirir. Açısal, değişiklik algılama sırasında ana bilgisayar özellik bağlarını otomatik olarak kontrol eder. Bağlama değişirse, direktifin ana bilgisayar öğesini güncelleyecektir.
@HostBinding
- özelliği anasistem öğesine bağlar, Bağlama değişirse HostBinding
anasistem öğesini günceller.
NOT: Her iki bağlantı da yakın zamanda kaldırıldı. "Stil kılavuzunun HostBinding-HostListening " kısmı bağlantılar dönene kadar yararlı bir alternatif olabilir.
Bunun ne anlama geldiğini resmetmenize yardımcı olacak basit bir kod örneği:
DEMO: Demo dalgıç canlı - "@HostListener & @HostBinding hakkında basit bir örnek"
- Bu örnek bir
role
ile bildirilen özelliği @HostBinding
ana bilgisayarın öğesine
- Hatırlıyorum
role
, çünkü bu bir özellikattr.role
.
<p myDir>
<p mydir="" role="admin">
geliştirici araçlarında görüntülediğinizde olur .
- Daha sonra
onClick
ile bildirilen olayı dinler@HostListener
role
her tıklamayla değişen, bileşenin ana bilgisayar öğesine bağlı olarak .
- Değişiklik
<p myDir>
tıklandığında açılış etiketi gelen değiştirmesidir <p mydir="" role="admin">
için <p mydir="" role="guest">
ve geri.
directives.ts
import {Component,HostListener,Directive,HostBinding,Input} from '@angular/core';
@Directive({selector: '[myDir]'})
export class HostDirective {
@HostBinding('attr.role') role = 'admin';
@HostListener('click') onClick() {
this.role= this.role === 'admin' ? 'guest' : 'admin';
}
}
AppComponent.ts
import { Component,ElementRef,ViewChild } from '@angular/core';
import {HostDirective} from './directives';
@Component({
selector: 'my-app',
template:
`
<p myDir>Host Element
<br><br>
We have a (HostListener) listening to this host's <b>click event</b> declared with @HostListener
<br><br>
And we have a (HostBinding) binding <b>the role property</b> to host element declared with @HostBinding
and checking host's property binding updates.
If any property change is found I will update it.
</p>
<div>View this change in the DOM of the host element by opening developer tools,
clicking the host element in the UI.
The role attribute's changes will be visible in the DOM.</div>
`,
directives: [HostDirective]
})
export class AppComponent {}