首页 > 解决方案 > 带参数的接口回调

问题描述

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

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

标签: angulartypescriptcallback

解决方案


推荐阅读