Я работаю над приложением angular для менеджеров, чтобы отслеживать свои команды, и я застрял с ошибкой @Output:
An error occurred: @Output deleteMeeting not initialized in 'MeetingItemComponent'.
У меня есть компонент Meetings, создающий список компонентов MeetingItem. Я хочу выполнять действия, когда пользователь нажимает разные кнопки (редактировать, удалять, отображать детали).
Вот мой шаблон родительских собраний:
<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>
Мой шаблон MeetingItem (только часть, о которой идет речь в этой публикации):
<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>
Компонент My 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);
}
}
angular
click
angular-event-emitter
Аполлон
источник
источник
Ответы:
Чтобы ваш код работал в stackblitz , мне пришлось заменить
с участием
источник
events
вместо@angular/core
.Была такая же ошибка,
Импорт был правильным, как
Но определение переменной было неправильным:
Должно быть:
источник
У меня была такая же проблема даже при импорте из
@angular/core
.Проблема : я инициализировал
EventEmmitter
объект вngOnInit
методе из моего класса компонента. Решение : я перенес инициализацию в конструктор класса компонента.источник
В вашем компоненте просто используйте основной угловой модуль. Просто поместите этот код в начало файла.
источник
Для меня это работает, если я изменяю ниже импорт import {EventEmitter} из 'events';
к
источник
изменить импорт:
import { EventEmitter } from 'events';
с помощью:import { EventEmitter } from '@angular/core';
источник
@Output() isAbout: EventEmitter<boolean> = new EventEmitter();
Это должен быть весь синтаксис, чтобы он работал, вам нужен экземпляр эмиттера событийисточник