首页 > 解决方案 > 如何在 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,以及如何调用和执行函数?

换句话说,如何将函数传递给“变量”,然后在适当的上下文中执行“变量”?

可能吗?

标签: angularangular-material

解决方案


你可以这样做:

askUser({ // callback
    displayText: 'Are you a superman?',
    callback: () => freeGift('blue shirt')
});

你会这样称呼它:

customData.callback();

推荐阅读