Ich arbeite an einer eckigen App, mit der Manager ihre Teams verfolgen können, und ich habe einen @ Output-Fehler:
An error occurred: @Output deleteMeeting not initialized in 'MeetingItemComponent'.
Ich habe eine Meetings-Komponente, die eine Liste der MeetingItem-Komponenten generiert. Ich möchte Aktionen ausführen, wenn der Benutzer auf verschiedene Schaltflächen klickt (Bearbeiten, Löschen, Details anzeigen).
Hier ist meine Vorlage für übergeordnete Meetings:
<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>
Meine MeetingItem-Vorlage (nur der Teil, der von diesem Beitrag betroffen ist):
<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>
Meine MeetingItem-Komponente:
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);
}
}
angular
click
angular-event-emitter
Apollo
quelle
quelle
Antworten:
Damit Ihr Code in einem Stackblitz funktioniert , musste ich ihn ersetzen
mit
quelle
events
statt importiert wurde, hier sind@angular/core
.Hatte den gleichen Fehler,
Import war richtig wie
Aber die Variablendefinition war falsch:
Sollte sein:
quelle
Ich hatte das gleiche Problem sogar beim Importieren von
@angular/core
.Das Problem : Ich habe das
EventEmmitter
Objekt in derngOnInit
Methode aus meiner Komponentenklasse initialisiert . Lösung : Ich habe die Initialisierung in den Klassenkonstruktor der Komponente verschoben.quelle
Verwenden Sie in Ihrer Komponente nur das Kernwinkelmodul. Fügen Sie diesen Code einfach am Anfang der Datei ein.
quelle
Bei mir funktioniert es, wenn ich unten den Import von {EventEmitter} aus 'events' ändere;
zu
quelle
Ändern Sie den Import:
import { EventEmitter } from 'events';
mit:import { EventEmitter } from '@angular/core';
quelle
@Output() isAbout: EventEmitter<boolean> = new EventEmitter();
Dies sollte die gesamte Syntax sein, damit es funktioniert. Sie benötigen die Instanz des Ereignis-Emittersquelle