Sudahkah Anda memeriksa dokumen resmi ini?
HostListener - Mendeklarasikan pendengar host. Angular akan memanggil metode yang didekorasi ketika elemen host memancarkan acara yang ditentukan.
@HostListener
- akan mendengarkan acara yang dipancarkan oleh elemen host yang dideklarasikan bersama @HostListener
.
HostBinding - Mengumumkan pengikatan properti host. Angular secara otomatis memeriksa binding properti host selama deteksi perubahan. Jika perubahan mengikat, itu akan memperbarui elemen host dari arahan.
@HostBinding
- akan mengikat properti ke elemen host, Jika mengikat berubah, HostBinding
akan memperbarui elemen host.
CATATAN: Kedua tautan telah dihapus baru-baru ini. Bagian " HostBinding-HostListening " dari panduan gaya dapat menjadi alternatif yang berguna sampai tautan kembali.
Berikut adalah contoh kode sederhana untuk membantu menggambarkan apa artinya ini:
DEMO: Ini demo live di plunker - "Contoh sederhana tentang @HostListener & @HostBinding"
- Contoh ini mengikat
role
properti - dideklarasikan dengan @HostBinding
- ke elemen host
- Ingat itu
role
adalah atribut, karena kami menggunakan attr.role
.
<p myDir>
menjadi <p mydir="" role="admin">
ketika Anda melihatnya di alat pengembang.
- Kemudian mendengarkan
onClick
acara yang dideklarasikan dengan @HostListener
, dilampirkan ke elemen host komponen, berubah role
setiap klik.
- Perubahan ketika
<p myDir>
diklik adalah bahwa tag pembukaan berubah dari <p mydir="" role="admin">
ke <p mydir="" role="guest">
dan kembali.
arahan.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 {}