Вам следует проверить пример документации Angular для , родитель слушает дочернее событие :
Вы объявляете свойство класса с помощью декоратора @Output()
и создаете его экземпляр для нового экземпляра EventEmitter.
Пример из Angular Docs
import { Component, EventEmitter, Input, Output } from '@angular/core';
@Component({
selector: 'app-voter',
template: `
<h4>{{name}}</h4>
<button (click)="vote(true)" [disabled]="didVote">Agree</button>
<button (click)="vote(false)" [disabled]="didVote">Disagree</button>
`
})
export class VoterComponent {
@Input() name: string;
@Output() voted = new EventEmitter<boolean>();
didVote = false;
vote(agreed: boolean) {
this.voted.emit(agreed);
this.didVote = true;
}
}
Помните, что это хорошая практика - всегда добавлять универсальную типизацию в EventEmitter, если он выдает значение.
Если событие выдает логическое значение, вы должны создать его с помощью @Output() eventName = new EventEmitter<boolean>();
Вышеприведенный компонент может использоваться в родительском компоненте с <app-voter (voted)="handleVote($event)"></app-voter>