angular - 带参数的接口回调
问题描述
我目前正在使用 Angular (v8.0.1) 实现一个通用的下拉菜单元素。因此,我计划使用特定界面的一组元素创建下拉列表,如下所示:
export interface DropdownSettings {
title: string;
callback: (...params: any) => any;
}
对于每个可能的下拉选项,都会创建一个接口对象并将其传递给组件;
public filter_options: DropdownSettings[] = [
{
title: 'Date ascending',
callback: ??
},
...
}
然后使用标准输入将选项传递给组件:
<dropdown title="Filter"
[options]="filter_options">
</dropdown>
如果用户在下拉列表中选择了一个元素,则应该调用 set 回调对传递的数据集执行一些操作。回调本身在下拉菜单组件实现中以下列方式调用:
elementSelected(callback: (??) => void) {
callback(??);
this.toggleVisible();
}
出现的问题如下,也标有问号。在回调函数中,我没有直接访问私有成员变量的权限,因为范围发生了变化,这是有道理的。但是,我也最好避免将一个巨大的数据集传递给组件。这仅仅是因为下拉菜单本身不必访问这些数据。因此,我想在创建下拉菜单的组件中指定一个标记为私有或静态的函数,这意味着所有操作都将在父组件本身内执行。
private static filterByDate(dataset: Redeem[]): void {
dataset.sort((a: Redeem, b: Redeem) => {
a = new Date(a.created_at);
b = new Date(b.created_at);
return a > b ? -1 : a < b ? 1 : 0;
});
}
所以出现的主要问题是:如何在带有附加参数的接口中指定回调函数?
解决方案
推荐阅读
- r - R中的结构XML问题
- python - 使用 Python 的 API 将文件上传到谷歌驱动器时出现问题
- php - 使用 Stripe 如何将 PaymentIntent 的客户端密码传递给表单?
- pdf - 使用 postscript 从 pdf 流中获取 pdf Mediabox
- jpa - 错误 ”
不能被选为标准的根,因为它不是一个实体” - excel - 如何使用 vba 将 range.value 存储在数组中以在单个图中绘制多个数据
- derby - 如何通过 SQL 查询检索 Apache Derby 中表的列名?
- webpack - Webpack Babel 未输出为 AMD
- python - 带有 keras/scikit-learn 的简单分类器神经网络的平面输出向量
- mongodb - MongoDB - 是否可以在 MapReduce 中编写几个不同的函数?