需要更改 slickgrid 切换过滤器(Angular-slickgrid)中运算符的符号

问题描述 投票:0回答:1

问题陈述

我需要更改 angular-slickgrid 中的光滑网格行过滤器功能中的 contains 运算符的符号。

我尝试过的是更改所有字段类型的列定义内的compoundOperatorList 中的运算符,但它引发错误 Type *'"a"' 不可分配给类型 'OperatorType |运算符字符串'。

注意:其中“a”是我试图更改包含运算符的符号

For reference

ionic-framework slickgrid angular-slickgrid
1个回答
0
投票

请注意,我是 Angular-Slickgrid 和 Slickgrid-Universal 的作者。

大多数类都是可扩展的,因为它们是 TypeScript 类,并且我特意使用

protected
(而不是
private
),这使得所有内容都可以扩展。然而,对于
operator
,它是一个定义列表,您无法更改,因为这会破坏库。
operator
的当前列表如下(参考
operatorString.type.ts

export type OperatorString = '' | '<>' | '!=' | '=' | '==' | '>' | '>=' | '<' | '<=' | '*' | 'a*' | '*z' | 'EQ' | 'GE' | 'GT' | 'NE' | 'LE' | 'LT' | 'IN' | 'NIN' | 'NOT_IN' | 'IN_CONTAINS' | 'NIN_CONTAINS' | 'NOT_IN_CONTAINS' | 'NOT_CONTAINS' | 'Not_Contains' | 'CONTAINS' | 'Contains' | 'EndsWith' | 'StartsWith' | 'RangeInclusive' | 'RangeExclusive' | 'IN_COLLECTION' | 'NOT_IN_COLLECTION';

您在问题中也犯了一个错误,

a*
相当于
StartsWith
NOT
Contains
(这是默认值,是一个空字符串)。如果您尝试将
a*
更改为其他内容,则库会将其识别为无效
operator
并且将无法工作。

那么这是否意味着你什么也做不了?答案是否定的,您可以创建一个自定义过滤器,使其按照您想要的方式运行。我知道这需要大量工作,但这是唯一可能的解决方案,因为再次

operator
是一个已定义的列表,您无法在不破坏库的情况下进行更改。

你可以看一下 Angular-Slickgrid 示例 3,标题为“标题,自定义编辑器”的列同时使用了自定义编辑器和自定义过滤器。

我也许可以添加一种在将来提供替代文本的方法,即不总是使用

operator
作为复合下拉列表中显示的文本,但这是对未来版本的功能请求。就像今天一样,除非您创建自己的自定义过滤器,否则您无法更改它

编辑

在一两周后发布的下一个 Angular-Slickgrid v6.5 中,您将能够通过以下网格选项更改任何操作符文本或其描述

this.gridOptions = {
  compoundOperatorAltTexts: {
    numeric: { '=': { operatorAlt: 'eq', descAlt: 'alternate numeric equal description' } },
    text: { '=': { operatorAlt: 'eq', descAlt: 'alternate text equal description' } }
  },
}

请注意,如果您希望它们正确对齐,

operatorAlt
不应超过 2 个字符(也可能是 3 个)。如果您显示的字符超过 2-3 个,那么您将必须调整 CSS 样式

例如,将

=
更改为
eq
并提供不同的描述

© www.soinside.com 2019 - 2024. All rights reserved.