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, HostBindingakan 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
roleproperti - dideklarasikan dengan @HostBinding- ke elemen host
- Ingat itu
roleadalah atribut, karena kami menggunakan attr.role.
<p myDir>menjadi <p mydir="" role="admin">ketika Anda melihatnya di alat pengembang.
- Kemudian mendengarkan
onClickacara yang dideklarasikan dengan @HostListener, dilampirkan ke elemen host komponen, berubah rolesetiap 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 {}