【问题标题】:EventEmitter emit is not working in angular 4EventEmitter 发射在角度 4 中不起作用
【发布时间】:2017-09-05 07:46:52
【问题描述】:

下面是我的代码:

search.component.html

<button (click)="addMe()">Click</button>

search.component.ts

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

@Component({
   selector: 'search-component',
   templateUrl: './search.component.html'
})

export class SearchComponent {
   @Output() userUpdated = new EventEmitter();

   addMe() {
       this.userUpdated.emit('my data to emit');
   }
}

profile.component.html

<search-component (userUpdated)="handleUserUpdated($event)"></search-component>

profile.component.ts

handleUserUpdated(e) {
   console.log('e', e);
}

【问题讨论】:

  • 错误是什么?
  • 模块长什么样?
  • 您确定SearchComponent 已实例化吗?有没有加到declarations:[]
  • new EventEmitter&lt;any&gt;();
  • 发射器类型无关紧要...

标签: angular emit


【解决方案1】:

您应该需要声明一个类型。如果您希望它是一个字符串,请使用@Output() userUpdated = new EventEmitter&lt;string&gt;();,如果它可以是任何类型,请使用@Output() userUpdated = new EventEmitter&lt;any&gt;();。

另外,您需要更改控制台日志,尝试切换到console.log("e-" + e)

【讨论】:

  • 这正是我的建议,不知道为什么你被否决了。
  • 这是因为您显然不需要为 EventEmitter 声明类型,即使如果您不这样做,智能感知也会抱怨
  • 你的意思不是打字本身,而是使用赋值和类型的正确 EventEmitter 初始化。否则,它将无法正常工作。
  • @Nadine 你能澄清一下你的意思吗?
  • 检查 Angular 文档。它需要被初始化。答案的类型声明在错误的位置:@Output() open: EventEmitter = new EventEmitter();
猜你喜欢
  • 2018-06-08
  • 2020-08-25
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2017-12-12
  • 2018-09-09
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多