angular - 如何在 Typescript(Angular Material)中实现回调函数?
问题描述
我正在使用Angular Material Dialog组件,我想传递一个可选的回调函数,并在用户单击OK button
. 我可以知道如何实施吗?
askUser(customData: any) {
openDialog() {
const dialogRef = this.dialog.open(AskDialog, {
data: customData
});
dialogRef.afterClosed().subscribe(isOK=> {
if (isOK && customData.hasOwnProperty('callback')) {
// ??? how to execute the "customData.callback"
}
});
}
}
我希望我可以askUser()
这样使用:
function freeGift(gift: string) { /* ... */ }
function contactPolice(phone: number, email: string) { /* ... */ }
askUser({ // callback
displayText: 'Are you a superman?',
callback: freeGift('blue shirt')
});
askUser({ // different callback with different arguments
displayText: 'Are you a criminal?',
callback: contactPolice(this.phone, 'police@gmail.com')
});
askUser({ // no callback
displayText: 'Do not disturb!'
});
如何将回调传递给customData.callback
,以及如何调用和执行函数?
换句话说,如何将函数传递给“变量”,然后在适当的上下文中执行“变量”?
可能吗?
解决方案
你可以这样做:
askUser({ // callback
displayText: 'Are you a superman?',
callback: () => freeGift('blue shirt')
});
你会这样称呼它:
customData.callback();
推荐阅读
- c# - 在UNITY中从一个场景切换到另一个场景时如何更改屏幕方向?
- php - Woocommerce 自定义字段:某些值不在订单页面中
- c# - 如何在数据库中存储和检索 Salt?
- javascript - Javascript 倒计时函数返回 NaN
- scala - 保存我的 main.js 文件时,Scala 格式会导致问题
- node.js - 如何从 Chrome 中的登录网站获取 cookie,使用 nodeJS 进行 Web Scraping?
- excel - 如何找到单个 LocID 的所有实例,评估它们以查看是否有任何摘要匹配“弹跳”,然后如果任何实例匹配则返回 T/F?
- angular - 在 fixture.detectChanges() 之后更改 Angular 中的 Input 属性会导致奇怪的行为
- python-3.x - 获取变量的最后一个已知值
- mysql - MySQL用户被拒绝