如何在Typescript(Angular Material)中实现回调函数?

如何在Typescript(Angular Material)中实现回调函数?,angular,angular-material,Angular,Angular Material,我正在使用Angular Material Dialog组件,我希望传递一个可选回调函数,如果用户单击确定按钮,则执行该函数。我可以知道如何实施它吗 askUser(customData: any) { openDialog() { const dialogRef = this.dialog.open(AskDialog, { data: customData }); dialogRef.afterClosed()

我正在使用Angular Material Dialog组件,我希望传递一个可选回调函数,如果用户单击
确定按钮
,则执行该函数。我可以知道如何实施它吗

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();

这很容易实现,只需使用()即可执行函数。制作了一个示例应用程序进行阐述