Loading...
Loading...
Implement the Syncfusion Angular Query Builder component for visual query construction, dynamic filtering, and rule management. Use this when building visual filter UIs, creating query conditions programmatically, importing/exporting SQL or MongoDB queries, or customizing query builder templates. This skill covers data binding, column configuration with operators, rule groups, theming, and Angular forms integration for the QueryBuilder (ejs-querybuilder) component.
npx skill4agent add syncfusion/angular-ui-components-skills syncfusion-angular-query-builderejs-querybuilder@syncfusion/ej2-angular-querybuilderfieldlabeltypeallowValidationisRequiredminmaxJsonAdaptorDataManagergetPredicate()addRulesdeleteRulesaddGroupsdeleteGroupscloneRulecloneGrouplockRulelockGroupenableSeparateConnectormaxGroupCountallowDragAndDropshowButtonsrulesetRulessetMongoQuerygetRulesgetMongoQuerycreatewritedestroyNgTemplateruleTemplateactionBeginfieldModeloperatorModelvalueModeldisplayModesummaryViewenableRtlenablePersistencesortDirectionimport { QueryBuilderModule } from '@syncfusion/ej2-angular-querybuilder';
import { Component } from '@angular/core';
@Component({
imports: [QueryBuilderModule],
standalone: true,
selector: 'app-root',
template: `
<ejs-querybuilder width="70%" [rule]="importRules">
<e-columns>
<e-column field="EmployeeID" label="Employee ID" type="number"></e-column>
<e-column field="FirstName" label="First Name" type="string"></e-column>
<e-column field="Title" label="Title" type="string"></e-column>
<e-column field="HireDate" label="Hire Date" type="date" format="dd/MM/yyyy"></e-column>
<e-column field="Country" label="Country" type="string"></e-column>
</e-columns>
</ejs-querybuilder>
`
})
export class App {
public importRules = {
condition: 'and',
rules: [
{ field: 'EmployeeID', label: 'Employee ID', type: 'number', operator: 'equal', value: 1 },
{ field: 'Country', label: 'Country', type: 'string', operator: 'equal', value: 'USA' }
]
};
}ng add @syncfusion/ej2-angular-querybuilder// In your component
import { QueryBuilderComponent } from '@syncfusion/ej2-angular-querybuilder';
import { ViewChild } from '@angular/core';
@ViewChild('querybuilder') qb!: QueryBuilderComponent;
getSqlQuery(): string {
return this.qb.getSqlFromRules(this.qb.getRules());
}// After component renders, update rules dynamically
this.qb.setRules({
condition: 'or',
rules: [
{ field: 'City', operator: 'equal', value: 'London' },
{ field: 'Country', operator: 'equal', value: 'UK' }
]
});// Add a rule to the root group
this.qb.addRules([{ field: 'Title', operator: 'contains', value: 'Manager' }], 'querybuilder_group0');<ejs-querybuilder [allowDragAndDrop]="true" [showButtons]="showButtons">
</ejs-querybuilder>public showButtons = { ruleDelete: true, groupInsert: true, groupDelete: true, ruleInsert: true, cloneRule: true, cloneGroup: true, lockRule: true, lockGroup: true };| Property | Type | Purpose |
|---|---|---|
| RuleModel | Initial query rules to render |
| ColumnsModel[] | Column definitions (field, label, type, operators) |
| object[] / DataManager | Data for auto-column generation and predicate |
| boolean | Enable drag-and-drop rule/group reordering |
| boolean | Different AND/OR per rule instead of per group |
| boolean | Show NOT condition toggle on groups |
| boolean | Show human-readable summary of current query |
| boolean | Persist rules to localStorage across refreshes |
| boolean | Right-to-left layout for RTL languages |
| string | |
| number | Max number of nested groups (default: 5) |
| string | Sort field dropdown: |
| boolean | Enable field/operator/value validation |
| ShowButtons | Control visibility of action buttons |
| Method | Purpose |
|---|---|
| Get current rules as JSON RuleModel |
| Set rules programmatically at runtime |
| Export rules to inline SQL string |
| Import inline SQL string into Query Builder |
| Export rules to MongoDB query string |
| Import MongoDB query string |
| Add rules to a specific group |
| Remove rules by ID |
| Add sub-groups to a group |
| Remove groups by ID |
| Clone a rule adjacent to the original |
| Clone a group with all its rules |
| Make a rule read-only |
| Make a group and its contents read-only |
| Trigger validation on all fields |
setRules