import { TrackByFunction } from '@angular/core'; import { Subject } from 'rxjs'; /** * 维护一组选定的值。可以向选择添加或从选择中删除一个或多个值。 */ interface TrackBySelection { isSelected(value: SelectableWithIndex): boolean; select(...values: SelectableWithIndex[]): void; deselect(...values: SelectableWithIndex[]): void; changed: Subject>; } /** * 带有可选`index`的可选值。当选择与`trackBy`一起使用时,`index`是必需的。 */ export interface SelectableWithIndex { value: T; index?: number; } /** * 表示选择集中的更改 */ export interface SelectionChange { before: SelectableWithIndex[]; after: SelectableWithIndex[]; } /** * 维护一组选定的项。支持选择和取消选择项目,并检查是否选择了一个值。 * 当用`trackBy`构造时,所有的项目将通过在它们上应用`trackBy`来识别。 * 因为`trackBy`需要传递条目的索引,所以在调用`isSelected`、`select`和`deselect`时,`index`字段应该被设置。 */ export declare class SelectionSet implements TrackBySelection { private _multiple; private _trackByFn?; private _selectionMap; changed: Subject>; constructor(_multiple?: boolean, _trackByFn?: TrackByFunction); /** * 检查是否被选中 * @param value */ isSelected(value: SelectableWithIndex): boolean; /** * 设置选中 * @param selects */ select(...selects: SelectableWithIndex[]): void; /** * 取消选中 * @param selects */ deselect(...selects: SelectableWithIndex[]): void; private _markSelected; private _markDeselected; private _getTrackedByValue; /** * 获取当前选中的列表 */ private _getCurrentSelection; } export {};