Произошла ошибка: @Output не инициализирован - PullRequest
0 голосов
/ 05 декабря 2018

Я работаю над угловым приложением для менеджеров, чтобы отслеживать их команды, и я застрял с ошибкой @Output:

An error occurred: @Output deleteMeeting not initialized in 'MeetingItemComponent'.

У меня есть компонент Meetings, генерирующий списокMeetingItem компоненты.Я хочу выполнять действия, когда пользователь нажимает на разные кнопки (редактировать, удалять, отображать детали).

Вот мой родительский шаблон 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>

Мой шаблон 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>

Мой компонент 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);
  }
}

Ответы [ 2 ]

0 голосов
/ 09 августа 2019

В вашем компоненте просто используйте основной угловой модуль.Просто поместите этот код в начало файла.

import { EventEmitter } from '@angular/core'; 
0 голосов
/ 06 декабря 2018

Чтобы ваш код работал в стек , мне пришлось заменить

import { EventEmitter } from 'events';

на

import { EventEmitter } from '@angular/core';
...