带参数的接口中的回调

时间:2019-06-04 08:08:19

标签: angular typescript callback

我目前正在使用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;
    });
}

因此出现的主要问题是: 如何在带有附加参数的接口中指定回调函数?

0 个答案:

没有答案