“Тип 'EventEmitter' не є загальним” ПОМИЛКА в angular


80

В даний час я читаю підручник, і підручник використовує EventEmitter. Код виглядає так

@Output() ratingClicked: EventEmitter<string> =
        new EventEmitter<string>();

Але код візуальної студії видає мені такі помилки:

  1. Тип 'EventEmitter' не є загальним.
  2. Очікувалося 0 аргументів типу, але отримано 1.

Навіть на кутовому веб-сайті схоже, що код правильний.

Зараз я використовую Angular CLI: 1.7.4; Вузол: 8.11.1; Машинопис: 2.8.1

Відповіді:


264

Ймовірно, ви використовуєте nodeвласний EventEmitter з node/index.d.tsie

import { EventEmitter } from 'events';

Виправити

Змініть імпорт на кутовий:

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

27

При використанні Visual Studio код, середа IDE автоматично імпортує EventEmitter з Node.js .

import { EventEmitter } from "events";

У цьому випадку вам доведеться вручну змінити його на кутовий основний модуль

import { EventEmitter } from "@angular/core";

0

У коді Visual Studio при спробі прослухати подію клацання користувача з вашого HTML-файлу компонента

@Output() event: EventEmitter<string> = new EventEmitter<string>();

він автоматично імпортує це до компонента import { EventEmitter } from '@angular/event'замість import { EventEmitter } from '@angular/core'.

Ресурс: https://ultimatecourses.com/blog/component-events-event-emitter-output-angular-2


0

Я робив той самий підручник і стикався з тією ж проблемою.

Це проблема з імпортом. EventEmitterнеобхідно імпортувати з@angular/core

Використання:

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

Це виправить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.