Javascript 通过对象分配和调用动态函数,角度6?
我为动态生成的按钮分配了一个单击处理程序。我正在调用click处理程序函数中的回调函数。不幸的是,我得到了一个错误的声明 “回调函数不是函数” 我在下面提供基本代码 HTML(组件2)-Javascript 通过对象分配和调用动态函数,角度6?,javascript,html,angular,this,Javascript,Html,Angular,This,我为动态生成的按钮分配了一个单击处理程序。我正在调用click处理程序函数中的回调函数。不幸的是,我得到了一个错误的声明 “回调函数不是函数” 我在下面提供基本代码 HTML(组件2)- {{btn.text} TS(组件2)- 从中传递数据的组件的代码- HTML(组件1)- 当我点击按钮触发事件时,它抛出这个错误- 错误类型错误:this.someCallbackFunction不是函数 我还尝试将处理程序设置为 (click)="btn[func]()" 但不幸的是,这对我不起作用
{{btn.text}
TS(组件2)-
从中传递数据的组件的代码-
HTML(组件1)-
当我点击按钮触发事件时,它抛出这个错误-
错误类型错误:this.someCallbackFunction不是函数
我还尝试将处理程序设置为
(click)="btn[func]()"
但不幸的是,这对我不起作用
请提出解决办法。谢谢:)尝试通过胖箭头函数调用函数,它应该具有正确的
上下文。只要改变你对它的定义
"buttons":[{
"text":"OK",
"type":"btn-red",
"func": () => { this.someHandler(); }
}];
关于上下文丢失和函数找不到的原因。尝试通过胖箭头函数调用函数,它应该具有正确的上下文。只要改变你对它的定义
"buttons":[{
"text":"OK",
"type":"btn-red",
"func": () => { this.someHandler(); }
}];
关于上下文丢失和函数找不到的原因
将“func”:this.someHandler
修改为“func”:()=>this.someHandler()
试着这样做:
buttons =[{
"text":"OK",
"type":"btn-red",
"func" :() => this.someHandler()
}]
将“func”:this.someHandler
修改为“func”:()=>this.someHandler()
试着这样做:
buttons =[{
"text":"OK",
"type":"btn-red",
"func" :() => this.someHandler()
}]
请为此使用@Output
在popup component.ts(子组件)处;
Html
<button *ngFor="let btn of content.buttons" type="button" (click)="btnClicked()" class="{{btn.type}}">
<span class="btn-text">{{btn.text}}</span>
</button>
请为此使用@Output
在popup component.ts(子组件)处;
Html
<button *ngFor="let btn of content.buttons" type="button" (click)="btnClicked()" class="{{btn.type}}">
<span class="btn-text">{{btn.text}}</span>
</button>
谢谢@dince12,成功了。再次感谢您的澄清:)很高兴能提供帮助:-)谢谢@dince12,它起作用了。再次感谢您的澄清:)很高兴能提供帮助:-)谢谢,@Adrita:)。帮了很多忙:)谢谢,@Adrita:)。帮助很大:)
import { Output, EventEmitter } from '@angular/core';
@Output() onBtnClicked = new EventEmitter<any>();
btnClicked(){
this.onBtnClicked.emit(1);
}
<app-popup [content]="popupContent" (onBtnClicked)="onBtnClicked($event)"></app-popup>
onBtnClicked(event){
}