ngx-query-建设器
基于 jQuery QueryBuilder 的现代化Angular 4+查询构建器. 支持重定制Angular组件,并提供了处理自定义数据类型的灵活方法.
从( 从)https://github.com/zebzhao/Angular-QueryBuilder 互联网档案馆的存檔,存档日期2013-12-22) 由于原作项目已停止更新,不支持最新的Angular版本,所以我将继续维护并支持Angular的最新版本.
开始
安装
- 角20,使用20.X.X
- 角19,使用19.X.X
npm install @eliot-ragueneau/ngx-query-builder
- 角9,使用0.6.0
- 角8,使用0.5.1
- 角6-7,使用0.4.2
- 角4-5,使用0.3.2
npm install angular2-query-builder
见 https://github.com/zebzhao/Angular-QueryBuilder 互联网档案馆的存檔,存档日期2013-12-22 关于旧版本使用的更详细情况.
实例
基本用途
app.module.ts
import {QueryBuilderModule} from "@eliot-ragueneau/ngx-query-builder";
import {AppComponent} from "./app.component"
@NgModule({
imports: [...,
QueryBuilderModule,
IonicModule.forRoot(AppComponent) // (Optional) for IonicFramework 2+
]})
export class AppModule {
}
app.component.html
...
<ngx-query-builder [(ngModel)]='query' [config]='config'></ngx-query-builder>
...
app.component.ts
import {QueryBuilderConfig} from '@eliot-ragueneau/ngx-query-builder';
export class AppComponent {
query = {
condition: 'and',
rules: [
{field: 'age', operator: '<=', value: 'Bob'},
{field: 'gender', operator: '>=', value: 'm'}
]
};
config: QueryBuilderConfig = {
fields: {
age: {name: 'Age', type: 'number'},
gender: {
name: 'Gender',
type: 'category',
options: [
{name: 'Male', value: 'm'},
{name: 'Female', value: 'f'}
]
}
}
}
}
自定义输入组件
app.component.html
<ngx-query-builder [(ngModel)]='query' [config]='config'>
<ng-container *queryInput="let rule; type: 'date'">
<custom-datepicker [(ngModel)]="rule.value"></custom-datepicker>
</ng-container>
</ngx-query-builder>
app.component.ts
query = {
condition: 'and',
rules: [
{field: 'birthday', operator: '=', value: new Date()}
]
};
config: QueryBuilderConfig = {
fields: {
birthday: {
name: 'Birthday',
type: 'date',
operators: ['=', '<=', '>'],
defaultValue: () => new Date()
}
}
}
属性绑定快速引用
ngx-query-builder
| 名称 | 类型 | 需求 | 默认 | 说明 |
|---|---|---|---|---|
allowRuleset | boolean | 可选 | true | 显示 + Ruleset 按钮,如果 true。 。 。 . |
allowCollapse | boolean | 可选 | false | 如果 true。 。 。 . |
classNames | QueryBuilderClassNames | 可选 | 不同儿童元素的 CSS 类名 query-builder 组件. | |
config | QueryBuilderConfig | 需求 | 主组件的配置对象 . | |
data | Ruleset | 可选 | {条件:"和",规则: []} | (使用时) ngModel 或者说 value 改为. ) |
emptyMessage | string | 可选 | 如果不允许为空规则显示信件. | |
ngModel | Ruleset | 可选 | {条件:"和",规则: []} | 存储组件状态的对象。 支持双向绑定. |
operatorMap | { [key: string]: string[] } | 可选 | 用于映射字段类型以列出运算符 . | |
persistValueOnFieldChange | boolean | 可选 | false | 若为 true,当一个字段更改为同类型的另一个字段,而该类型是:字符串、数字、时间、日期或布尔等,则坚持先前的值。 如果提供了配置. 计算 FellowChangeValue , 此选项将被忽略 . |
config.calculateFieldChangeValue | (currentField: Field, nextField: Field, currentValue: any) => any | 可选 | 用于计算规则字段变化时的新值. | |
value | Ruleset | 可选 | {条件:"和",规则: []} | 存储组件状态的对象. |
结构指令
使用这些指令来用自定义组件来取代查询构建器的不同部分.
queryArrowIcon
用于替换查询构建器倒塌/ accordion 模式中使用的扩展箭头的指令.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
querySwitchGroup
用于替换开关控制,例如AND/OR条件。 通过使用此指令来覆盖默认组件,可以指定更多的自定义条件.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
onChange | () => void | 回调处理切换组组件的更改 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryButtonGroup
用于替换添加的默认按钮组, 添加 Ruleset, 删除 Ruleset 按钮 .
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
parentValue | RuleSet | 如果存在父节点的数据 |
addRule | () => void | 处理新增规则的功能 |
addRuleSet | () => void | 处理添加新规则集的函数 |
removeRuleSet | () => void | 处理删除当前规则集的函数 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryRulesetAddRuleButton
用于替换添加规则的默认按钮 .
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
addRule | () => void | 处理新增规则的功能 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryRulesetAddRulesetButton
用于替换添加规则的默认按钮 .
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
addRuleSet | () => void | 处理添加新规则集的函数 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryRulesetRemoveButton
用于替换删除规则的默认按钮 .
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
removeRuleSet | () => void | 处理删除当前规则集的函数 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryEntity
用于替换实体选择组件.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | Rule | 当前包含字段、值和运算符的规则对象 |
entities | Entity[] | 构成部分实体清单,按 config |
onChange | (entityValue: string, rule: Rule) => void | 回调处理实体组件的更改 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryField
使用此指令来取代查询字段选择组件.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | Rule | 当前包含字段、值和运算符的规则对象 |
getFields | (entityName: string) => void | 获取对应实体的字段列表 |
fields | Field[] | 该组件的字段列表, 由 config |
onChange | (fieldValue: string, rule: Rule) => void | 回调处理外地组件的更改 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryOperator
用于替换查询运算符选择组件.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | Rule | 当前包含字段、值和运算符的规则对象 |
operators | string[] | 字段运算符列表,由 getOperators |
onChange | () => void | 回调处理操作员组件的更改 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryInput
用于替换输入组件. 指定类型/queryInputType,以匹配特定的字段类型到输入模板.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | Rule | 当前包含字段、值和运算符的规则对象 |
field | Field | 当前包含字段值和名称的字段对象 |
options | Option[] | 字段选项列表,由 getOptions |
onChange | () => void | 回调处理输入组件的更改 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryRuleRemoveButton
替换默认指令删除单个规则按钮组件 .
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | Rule | 当前包含字段、值和运算符的规则对象 |
removeRule | (rule: Rule) => void | 处理删除规则的函数 |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
queryEmptyWarning
可用于自定义默认的空警告消息,也可以指定 emptyMessage 财产约束.
| 上下文名称 | 类型 | 说明 |
|---|---|---|
$implicit | RuleSet | 当前包含儿童规则列表的规则集对象 |
message | string | 传入的值 emptyMessage |
getDisabledState | () => boolean | 获取或确定组件的已禁用状态 |
依赖关系
- 角 18 + 变相
发展
备忘
pnpm watchpnpm start- http://localhost:4200 查看演示
演示预览

代码结构
- BaseQuery 构建器( 逻辑容器 - 隐藏)
- 查询构建组件( Root 组件 -) 导出(中文(简体) )
- 内部查询构建组件( 递归组件 - 隐藏)
构建
pnpm build
发布
cd dist/ngx-query-builder
npm publish --access public
用于其他地方项目
cd dist/ngx-query-builder
npm link
cd /path/to/other/project
npm link ngx-query-builder
就是这样.