Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过对象分配和调用动态函数,角度6?_Javascript_Html_Angular_This - Fatal编程技术网

Javascript 通过对象分配和调用动态函数,角度6?

Javascript 通过对象分配和调用动态函数,角度6?,javascript,html,angular,this,Javascript,Html,Angular,This,我为动态生成的按钮分配了一个单击处理程序。我正在调用click处理程序函数中的回调函数。不幸的是,我得到了一个错误的声明 “回调函数不是函数” 我在下面提供基本代码 HTML(组件2)- {{btn.text} TS(组件2)- 从中传递数据的组件的代码- HTML(组件1)- 当我点击按钮触发事件时,它抛出这个错误- 错误类型错误:this.someCallbackFunction不是函数 我还尝试将处理程序设置为 (click)="btn[func]()" 但不幸的是,这对我不起作用

我为动态生成的按钮分配了一个单击处理程序。我正在调用click处理程序函数中的回调函数。不幸的是,我得到了一个错误的声明

“回调函数不是函数”

我在下面提供基本代码

HTML(组件2)-


{{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){

}