EventEmitter
Используйте в компонентах с директивой @Output для синхронной или асинхронной отправки пользовательских событий и регистрации обработчиков этих событий путем подписки на экземпляр.
API
interface EventEmitter<T> extends Subject<T>, OutputRef<T> {
emit(value?: T | undefined): void;
subscribe(next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined): Subscription;
subscribe(observerOrNext?: any, error?: any, complete?: any): Subscription;
}
emit
voidОтправляет событие, содержащее заданное значение.
T | undefinedОтправляемое значение.
void
subscribe
SubscriptionРегистрирует обработчики событий, отправляемых этим экземпляром.
((value: T) => void) | undefinedЕсли указан, пользовательский обработчик отправляемых событий.
((error: any) => void) | undefinedЕсли указан, пользовательский обработчик уведомления об ошибке от этого эмиттера.
(() => void) | undefinedЕсли указан, пользовательский обработчик уведомления о завершении от этого эмиттера.
Subscription
subscribe
SubscriptionРегистрирует обработчики событий, отправляемых этим экземпляром.
anyЕсли указан, пользовательский обработчик отправляемых событий или объект наблюдателя.
anyЕсли указан, пользовательский обработчик уведомления об ошибке от этого эмиттера.
anyЕсли указан, пользовательский обработчик уведомления о завершении от этого эмиттера.
Subscription
Примечания по использованию
Расширяет RxJS Subject для Angular, добавляя метод emit().
В следующем примере компонент определяет два выходных свойства, создающих эмиттеры событий. При нажатии на заголовок эмиттер отправляет событие открытия или закрытия, чтобы переключить текущее состояние видимости.
@Component({
selector: 'zippy',
template: `
<div class="zippy">
<div (click)="toggle()">Toggle</div>
<div [hidden]="!visible">
<ng-content></ng-content>
</div>
</div>`})
export class Zippy {
visible: boolean = true;
@Output() open: EventEmitter<any> = new EventEmitter();
@Output() close: EventEmitter<any> = new EventEmitter();
toggle() {
this.visible = !this.visible;
if (this.visible) {
this.open.emit(null);
} else {
this.close.emit(null);
}
}
}
Получите доступ к объекту события с помощью аргумента $event, переданного обработчику выходного события:
<zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/EventEmitter