我目前正在使用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;
});
}
因此出现的主要问题是: 如何在带有附加参数的接口中指定回调函数?