@eliot-ragueneau/ngx-query-builder

中文文档
20.0.2发布于 2025/07/01MITTypeScriptES Module近 30 天下载 2337

npm version [npm downloads a month(https://i) (中文(简体) )

中文使用文档
文档目录12 节
  1. 安装
  2. 基本用途
  3. 自定义输入组件
  4. 属性绑定快速引用
  5. 结构指令
  6. 依赖关系
  7. 备忘
  8. 演示预览
  9. 代码结构
  10. 构建
  11. 发布
  12. 用于其他地方项目

ngx-query-建设器

npm version npm downloads a month npm downloads a week Contribute with Gitpod

基于 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

名称类型需求默认说明
allowRulesetboolean可选true显示 + Ruleset 按钮,如果 true。 。 。 .
allowCollapseboolean可选false如果 true。 。 。 .
classNamesQueryBuilderClassNames可选不同儿童元素的 CSS 类名 query-builder 组件.
configQueryBuilderConfig需求主组件的配置对象 .
dataRuleset可选{条件:"和",规则: []}(使用时) ngModel 或者说 value 改为. )
emptyMessagestring可选如果不允许为空规则显示信件.
ngModelRuleset可选{条件:"和",规则: []}存储组件状态的对象。 支持双向绑定.
operatorMap{ [key: string]: string[] }可选用于映射字段类型以列出运算符 .
persistValueOnFieldChangeboolean可选false若为 true,当一个字段更改为同类型的另一个字段,而该类型是:字符串、数字、时间、日期或布尔等,则坚持先前的值。 如果提供了配置. 计算 FellowChangeValue , 此选项将被忽略 .
config.calculateFieldChangeValue(currentField: Field, nextField: Field, currentValue: any) => any可选用于计算规则字段变化时的新值.
valueRuleset可选{条件:"和",规则: []}存储组件状态的对象.

结构指令

使用这些指令来用自定义组件来取代查询构建器的不同部分.

queryArrowIcon

用于替换查询构建器倒塌/ accordion 模式中使用的扩展箭头的指令.

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
getDisabledState() => boolean获取或确定组件的已禁用状态

querySwitchGroup

用于替换开关控制,例如AND/OR条件。 通过使用此指令来覆盖默认组件,可以指定更多的自定义条件.

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
onChange() => void回调处理切换组组件的更改
getDisabledState() => boolean获取或确定组件的已禁用状态

queryButtonGroup

用于替换添加的默认按钮组, 添加 Ruleset, 删除 Ruleset 按钮 .

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
parentValueRuleSet如果存在父节点的数据
addRule() => void处理新增规则的功能
addRuleSet() => void处理添加新规则集的函数
removeRuleSet() => void处理删除当前规则集的函数
getDisabledState() => boolean获取或确定组件的已禁用状态

queryRulesetAddRuleButton

用于替换添加规则的默认按钮 .

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
addRule() => void处理新增规则的功能
getDisabledState() => boolean获取或确定组件的已禁用状态

queryRulesetAddRulesetButton

用于替换添加规则的默认按钮 .

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
addRuleSet() => void处理添加新规则集的函数
getDisabledState() => boolean获取或确定组件的已禁用状态

queryRulesetRemoveButton

用于替换删除规则的默认按钮 .

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
removeRuleSet() => void处理删除当前规则集的函数
getDisabledState() => boolean获取或确定组件的已禁用状态

queryEntity

用于替换实体选择组件.

上下文名称类型说明
$implicitRule当前包含字段、值和运算符的规则对象
entitiesEntity[]构成部分实体清单,按 config
onChange(entityValue: string, rule: Rule) => void回调处理实体组件的更改
getDisabledState() => boolean获取或确定组件的已禁用状态

queryField

使用此指令来取代查询字段选择组件.

上下文名称类型说明
$implicitRule当前包含字段、值和运算符的规则对象
getFields(entityName: string) => void获取对应实体的字段列表
fieldsField[]该组件的字段列表, 由 config
onChange(fieldValue: string, rule: Rule) => void回调处理外地组件的更改
getDisabledState() => boolean获取或确定组件的已禁用状态

queryOperator

用于替换查询运算符选择组件.

上下文名称类型说明
$implicitRule当前包含字段、值和运算符的规则对象
operatorsstring[]字段运算符列表,由 getOperators
onChange() => void回调处理操作员组件的更改
getDisabledState() => boolean获取或确定组件的已禁用状态

queryInput

用于替换输入组件. 指定类型/queryInputType,以匹配特定的字段类型到输入模板.

上下文名称类型说明
$implicitRule当前包含字段、值和运算符的规则对象
fieldField当前包含字段值和名称的字段对象
optionsOption[]字段选项列表,由 getOptions
onChange() => void回调处理输入组件的更改
getDisabledState() => boolean获取或确定组件的已禁用状态

queryRuleRemoveButton

替换默认指令删除单个规则按钮组件 .

上下文名称类型说明
$implicitRule当前包含字段、值和运算符的规则对象
removeRule(rule: Rule) => void处理删除规则的函数
getDisabledState() => boolean获取或确定组件的已禁用状态

queryEmptyWarning

可用于自定义默认的空警告消息,也可以指定 emptyMessage 财产约束.

上下文名称类型说明
$implicitRuleSet当前包含儿童规则列表的规则集对象
messagestring传入的值 emptyMessage
getDisabledState() => boolean获取或确定组件的已禁用状态

依赖关系

  • 角 18 + 变相

发展

备忘

  • pnpm watch
  • pnpm start
  • http://localhost:4200 查看演示

演示预览

demo demo

代码结构

  • 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

就是这样.

版本与发布记录

@eliot-ragueneau/ngx-query-builder 共发布 7 个版本,首次发布于 2025/07/01;过去 12 个月发布了 0 个版本。

版本发布日期距今
20.0.2latest2025/07/011.4 年前
19.0.32025/07/011.4 年前
20.0.12025/07/011.4 年前
19.0.22025/07/011.4 年前
19.0.12025/07/011.4 年前
20.0.02025/07/011.4 年前

关于 @eliot-ragueneau/ngx-query-builder 的常见问题

@eliot-ragueneau/ngx-query-builder 是什么?

[(https://i) (中文(简体) )

如何安装 @eliot-ragueneau/ngx-query-builder?

在项目目录运行 npm install @eliot-ragueneau/ngx-query-builder,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@angular/common(^20.0.0)、@angular/core(^20.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@eliot-ragueneau/ngx-query-builder 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@eliot-ragueneau/ngx-query-builder 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@eliot-ragueneau/ngx-query-builder 可以商用吗?

@eliot-ragueneau/ngx-query-builder 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@eliot-ragueneau/ngx-query-builder 的下载量有多少?

根据 npm 官方下载统计,@eliot-ragueneau/ngx-query-builder 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,337 次,日均约 78 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@eliot-ragueneau/ngx-query-builder 还在维护吗?

最新版本 20.0.2 发布于 2025/07/01(1.4 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/07/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。