网站搜索

angular - 从子组件到父组件的 EventEmitter 不起作用


我需要向父组件传递一个值(0),所以我像下面这样调用子组件:

<app-componentadduser [target]="target" *ngIf="opt==1" (newItemEvent)="changeOpt($event)"></app-componentadduser>

以及 changeOpt 的代码:

changeOpt(newItem: number) {
    console.log(newItem)
    this.opt = newItem;
  }

在孩子这一边,

@Input() target: string;
  @Output() newItemEvent = new EventEmitter<number>();

然后当一个按钮被点击,并且在一个过程发生之后:

this.newItemEvent.emit(0);

从父组件中,我甚至尝试 console.log newItem(值为 0),但是 changeOpt 从未被执行。

我不知道自己错过了什么。我以为 *ngIf 和它有关系,但事实并非如此。

谢谢。

更新:

Console.log 抛出了这个错误:

类型错误:ctx_r9.changeOpt 不是一个函数。(在 'ctx_r9.changeOpt($event)' 中,'ctx_r9.changeOpt' 未定义)

答案#1

既然你只是传递一个数字,试试

(newItemEvent)="opt=$event"

答案#2

首先,我不知道你在什么地方调用 this.newItemEvent.emit(0);

所以这个方法可能存在问题。你应该在按钮点击或某些操作时调用它。其他一切看起来都没问题,但也可能是我看错了 :D

无论如何,我创建了一个带有你输出的 stackBlitz 示例,一切都能正常工作。看看吧。

例子