"输入' EventEmitter'不是通用的"角度错误

时间:2018-04-19 02:39:18

标签: angular typescript

美好的一天!我目前正在学习教程,教程正在使用EventEmitter。代码就像这样

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

但是visual studio代码给了我这些错误 1.键入&#39; EventEmitter&#39;不是通用的。 2.期望的0类型参数,但得到1。

即使在有角度的网站中,看起来代码也是正确的。 https://angular.io/api/core/EventEmitter

我目前正在使用Angular CLI:1.7.4;节点:8.11.1; Typescritp:2.8.1

希望有人可以提供帮助。

5 个答案:

答案 0 :(得分:111)

您可能正在使用node中的node/index.d.ts原生EventEmitter。

修复

在您的文件中添加以下导入:

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

答案 1 :(得分:11)

使用Visual Studio代码时,IDE自动imports EventEmitter from Node.js

import { EventEmitter } from "events";

在这种情况下,您必须手动将其更改为角铁芯模块

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

答案 2 :(得分:0)

我会从右侧分配中删除<string>以避免此错误与文档一致。左侧的<string>应该足以声明发射值的泛型类型。

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

希望这有帮助!

答案 3 :(得分: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

答案 4 :(得分:0)

我在做同样的教程,遇到同样的问题。

这是导入的问题。 EventEmitter必须从@angular/core导入

使用:

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

这将解决它。