Ви перевірили ці офіційні документи?
HostListener - оголошує хост-слухача. Кутовий буде викликати оформлений метод, коли елемент хосту випромінює вказану подію.
@HostListener
- прослухає подію, яку випромінює елемент хосту, який оголошено за допомогою @HostListener
.
HostBinding - оголошує прив'язку властивості хоста. Кутовий автоматично перевіряє прив'язки властивостей хоста під час виявлення змін. Якщо прив'язка зміниться, вона оновить головний елемент директиви.
@HostBinding
- прив'яже властивість до хост-елемента, якщо прив'язка зміниться, HostBinding
оновить хост-елемент.
ПРИМІТКА . Нещодавно видалено обидва посилання. Частина « HostBinding-HostListening » у посібнику зі стилів може бути корисною альтернативою до повернення посилань.
Ось простий приклад коду, який допоможе уявити, що це означає:
DEMO: Ось демонстрація в ефірі в планку - "Простий приклад про @HostListener & @HostBinding"
- Цей приклад пов'язує
role
властивість - оголошене з @HostBinding
- елементом хоста
- Нагадаємо, що
role
це атрибут, оскільки ми використовуємо attr.role
.
<p myDir>
стає, <p mydir="" role="admin">
коли ви переглядаєте його в інструментах для розробників.
- Потім він прослуховує
onClick
подію, оголошену разом із @HostListener
приєднаним до хост-елемента компонента, змінюючи role
кожне клацання.
- Зміна при
<p myDir>
натисканні на кнопку полягає в тому, що її початковий тег змінюється <p mydir="" role="admin">
на " <p mydir="" role="guest">
назад" і "назад".
директив.ц
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 {}