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 示例,一切都能正常工作。看看吧。
例子
