Estoy trabajando en una aplicación angular para que los gerentes realicen un seguimiento de sus equipos, y tengo un error de @Output:
An error occurred: @Output deleteMeeting not initialized in 'MeetingItemComponent'.
Tengo un componente de reuniones, que genera una lista de componentes de MeetingItem. Quiero realizar acciones cuando el usuario hace clic en diferentes botones (editar, eliminar, mostrar detalles).
Aquí está mi plantilla de reuniones para padres:
<div class="meeting__list" [@newMeeting]="meetings.length">
<app-meeting-item
*ngFor="let meeting of meetings"
[meeting]="meeting"
(deleteMeeting)="deleteMeeting($event)"
(openMeetingDialog)="openMeetingDialog($event)"
(messageClick)="openMessage($event)"
></app-meeting-item>
</div>
Mi plantilla MeetingItem (solo la parte afectada por esta publicación):
<span class="meeting__actions">
<mat-icon *ngIf="meeting.message" (click)="onMessageClick(meeting)" matTooltip="Read the message"
matTooltipPosition="above" class="icon--notes">notes</mat-icon>
<mat-icon (click)="onOpenMeetingDialog(meeting)" matTooltip="Edit this meeting" matTooltipPosition="above" class="icon--edit">edit</mat-icon>
<mat-icon (click)="onDeleteMeeting(meeting.id)" matTooltip="Delete this meeting" matTooltipPosition="above" class="icon--delete">delete_outline</mat-icon>
</span>
Mi componente MeetingItem:
import { Component, Input, Output } from '@angular/core';
import { EventEmitter } from 'events';
@Component({
selector: 'app-meeting-item',
templateUrl: './meeting-item.component.html',
styleUrls: ['./meeting-item.component.scss']
})
export class MeetingItemComponent {
@Input() meeting;
@Output() deleteMeeting = new EventEmitter();
@Output() openMeetingDialog = new EventEmitter();
@Output() messageClick = new EventEmitter();
constructor() {}
onDeleteMeeting(meetingId) {
this.deleteMeeting.emit(meetingId);
}
onOpenMeetingDialog(meeting) {
this.openMeetingDialog.emit(meeting);
}
onMessageClick(meeting) {
this.messageClick.emit(meeting);
}
}
Respuestas:
Para que su código funcione en un stackblitz , tuve que reemplazar
con
fuente
events
lugar de@angular/core
.Tuve el mismo error
La importación fue correcta como
Pero la definición de la variable estaba mal:
Debiera ser:
fuente
Tuve el mismo problema incluso al importar de
@angular/core
.El problema : estaba inicializando el
EventEmmitter
objeto en elngOnInit
método de mi clase de componente. Solución : moví la inicialización al constructor de clases del componente.fuente
En su componente, solo use el módulo angular central. Simplemente coloque este código al principio del archivo.
fuente
Para mí, funciona si cambio a continuación las importaciones import {EventEmitter} de 'eventos';
a
fuente
cambiar la importación:
import { EventEmitter } from 'events';
con:import { EventEmitter } from '@angular/core';
fuente
@Output() isAbout: EventEmitter<boolean> = new EventEmitter();
Esta debe ser la sintaxis completa para que funcione, necesita la instancia del emisor de eventosfuente