Angular EventEmitter 错误:预期有 0 个类型参数,但得到了 1 个

typescript

1个回答

写回答

mayyds

2025-06-19 20:40

+ 关注

typescript
typescript

Angular EventEmitter 错误:预期有 0 个类型参数,但得到了 1 个

Angular 是一种流行的前端框架,被广泛用于构建单页应用程序。在 Angular 中,我们可以使用事件来实现组件之间的通信。Angular 提供了一个名为 EventEmitter 的类,它允许我们在组件之间发送自定义事件。然而,有时候在使用 EventEmitter 时,我们可能会遇到一个错误:预期有 0 个类型参数,但得到了 1 个。

错误信息的含义

在 Angular 中,EventEmitter 是一个泛型类,可以使用类型参数来指定事件传递的数据类型。例如,我们可以创建一个 EventEmitter 的实例来发送数字类型的事件。然而,当我们在创建 EventEmitter 实例时,却没有指定类型参数,或者指定了一个错误的类型参数时,就会出现这个错误。

错误示例

让我们来看一个简单的示例代码,来模拟这个错误的发生:

typescript

import { Component, EventEmitter, Output } from '@angular/core';

@Component({

selector: 'app-example',

template: <code>

<button (click)="onClick()">Click me</button>

</code>

})

export class ExampleComponent {

@Output() myEvent: EventEmitter = new EventEmitter(); // 错误的用法

onClick() {

this.myEvent.emit();

}

}

在上面的代码中,我们创建了一个名为 myEvent 的 EventEmitter 实例,但是没有指定类型参数。由于 EventEmitter 是一个泛型类,这样的用法是错误的,会导致预期有 0 个类型参数的错误。

解决方法

要解决这个错误,我们需要在创建 EventEmitter 实例时,指定正确的类型参数。根据实际需求,我们可以选择不同的数据类型来作为事件的传递类型。在上面的示例中,我们可以将 EventEmitter 修改为 EventEmitter 或者 EventEmitter,具体取决于我们的需求。

修正后的示例代码如下:

typescript

import { Component, EventEmitter, Output } from '@angular/core';

@Component({

selector: 'app-example',

template: <code>

<button (click)="onClick()">Click me</button>

</code>

})

export class ExampleComponent {

@Output() myEvent: EventEmitter<void> = new EventEmitter<void>(); // 修正后的用法

onClick() {

this.myEvent.emit();

}

}

在上面的代码中,我们将 myEvent 的类型参数修改为 void,表示该事件不传递任何数据。修正后的代码不再报错,可以正常使用 EventEmitter 发送自定义事件。

在使用 Angular EventEmitter 时,我们需要注意正确指定类型参数,以避免出现预期有 0 个类型参数,但得到了 1 个的错误。根据实际需求,我们可以选择不同的类型参数来作为事件的传递类型。通过修正错误示例中的代码,我们可以正确地使用 EventEmitter 来实现组件之间的通信。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号