Querying in Angular Data component
10 Jan 202324 minutes to read
In this section, you will see in detail about how to build query using Query
class and consume
the data source.
Specifying resource name using from
The from
method is used to specify the resource name or table name from where the data should be retrieved.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().from('Orders').take(8)).then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Projection using select
The select
method is used to select particular fields or columns from the data source.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().select(['OrderID', 'CustomerID', 'EmployeeID']).take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Eager loading navigation properties
You can use the expand
method to eagerly load navigation properties. The navigation properties
values are accessed using appropriate field names separated by dot(.) sign.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI })
.executeQuery(new Query().expand('Employee').select(['OrderID', 'CustomerID', 'Employee.FirstName']).take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee Name</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Sorting
You can use the sortBy
method to perform sort operation in the
data source. Default sorting order is ascending. To change the sort order, either you can
specify the second argument of sortBy
as descending or use the
sortByDesc
method.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI: string = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor})
.executeQuery(new Query().sortBy('CustomerID', 'descending').take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Multi sorting can be performed by simply chaining the multiple
sortBy
methods.
Filtering
You can use the where
method to build filter criteria which allows you to get reduced view of
records. The where
method can also be chained to form multiple filter criteria.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().sortBy('CustomerID', 'descending').take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Filter Operators
Filter operators are generally used to specify the filter type. The various filter operators
supported by DataManager
is listed below.
- greaterthan
- greaterthanorequal
- lessthan
- lessthanorequal
- equal
- notequal
- startswith
- endswith
- contains
These filter operators are used for creating filter query using
where
method andPredicate
class.
Build complex filter criteria using Predicate
Sometimes chaining where
method is not sufficient to create very
complex filter criteria, in such cases we can use Predicate
class to create composite filter criteria.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, Predicate, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
let predicate: Predicate = new Predicate('EmployeeID', 'equal', 3);
predicate = predicate.or('EmployeeID', 'equal', 2);
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().where(predicate).take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Searching
You can use the search
method to create search criteria, it
differs from the filter in the way that search criteria will applied to all fields in the data
source whereas filter criteria will be applied to a particular field.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ReturnOption } from '@syncfusion/ej2-data';
import { data } from './datasource';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager(data as JSON[])
.executeQuery(new Query().search('VI', ['CustomerID']))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
You can search particular fields by passing the field name collection in the second argument of
search
method.
Grouping
DataManager
allow you to group records by category. The
group
method is used to add group query.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().group('CustomerID').take(8))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table' >
<tr>
<th>Order ID</th>
<th>Customer ID</th>
<th>Employee ID</th>
</tr>
<tbody group *ngFor="let item of items" [data]='item' ></tbody>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { GroupComponent } from './group.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent, GroupComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Multiple grouping can be done by simply chaining the
group
method.
Paging
You can query paged data using page
method. This allow you to query
particular set of records based on the page size and index.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().page(2, 6))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Aggregation
The aggregate
method allows you to get aggregated value for a field based on the type.
The built-in aggregate types are,
- sum
- average
- min
- max
- count
- truecount
- falsecount
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'https://js.syncfusion.com/demos/ejServices/Wcf/Northwind.svc/Orders';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public min = 0;
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().take(5).requiresCount().aggregate('min', 'EmployeeID'))
.then((e: ReturnOption) => { this.items = e.result as object[]; this.min = e.aggregates['EmployeeID - min']; }).catch((e) => true);
}
}
<table class='e-table'>
<tr><th>Order ID</th><th>Customer ID</th><th>Employee ID</th></tr>
<tr *ngFor="let item of items">
<td></td><td></td><td></td>
</tr>
<tr><td></td><td></td><td>Min: content<h1 id="qrcodegenerator-in-angular-barcode-component">Qrcodegenerator in Angular Barcode component</h1>
<h1 id="qr-code">QR Code</h1>
<p>A QR Code is a two-dimensional barcode that consists of a grid of dark and light dots or blocks that form a square. The data encoded in the barcode can be numeric, alphanumeric, or Shift Japanese Industrial Standards (JIS8) characters. The QR Code uses version from 1 to 40. Version 1 measures 21 modules x 21 modules, Version 2 measures 25 modules x 25 modules, and so on. The number of modules increases in steps of 4 modules per side up to Version 40 that measures 177 modules x 177 modules. Each version has its own capacity. By default, the barcode control automatically set the version according to the length of the input text. The QR Barcodes are designed for industrial uses and also commonly used in consumer advertising.</p>
<div class="tabs" id="code-snippet-1">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class=""><a data-target="#uwn592auvw5fo9wrjt0nncoh8oqnajxx-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.component.ts</a></li>
<li role="presentation" class=""><a data-target="#58ou9kpj8x9fsihshf1nhi3ij6wlaaee-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.module.ts</a></li>
<li role="presentation" class=""><a data-target="#kplm221lyyzbxlgezh3cyeq7sudppv4d-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">main.ts</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane" id="uwn592auvw5fo9wrjt0nncoh8oqnajxx-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">Component</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">"@angular/core"</span><span class="p">;</span>
<span class="kd">@Component</span><span class="p">({</span>
<span class="nx">selector</span><span class="o">:</span> <span class="s2">"app-container"</span><span class="p">,</span>
<span class="c1">// specifies the template string for the barcode generator component</span>
<span class="nx">template</span><span class="o">:</span> <span class="sb">`<ejs-qrcodegenerator style="display: block;" #barcode id="barcode" width="200px" height="150px" mode="SVG" value="Syncfusion"></ejs-qrcodegenerator>`</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppComponent</span> <span class="p">{}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="58ou9kpj8x9fsihshf1nhi3ij6wlaaee-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">NgModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BrowserModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppComponent</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.component'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span><span class="nx">QRCodeGeneratorAllModule</span><span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@syncfusion/ej2-angular-barcode-generator'</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * Module</span>
<span class="cm"> */</span>
<span class="kd">@NgModule</span><span class="p">({</span>
<span class="nx">imports</span><span class="o">:</span> <span class="p">[</span>
<span class="nx">BrowserModule</span><span class="p">,</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span> <span class="nx">QRCodeGeneratorAllModule</span> <span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span>
<span class="p">],</span>
<span class="nx">declarations</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">bootstrap</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">providers</span><span class="o">:</span> <span class="p">[</span> <span class="p">]</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppModule</span> <span class="p">{</span> <span class="p">}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="kplm221lyyzbxlgezh3cyeq7sudppv4d-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">platformBrowserDynamic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser-dynamic'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">enableProdMode</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.module'</span><span class="p">;</span>
<span class="nx">enableProdMode</span><span class="p">();</span>
<span class="nx">platformBrowserDynamic</span><span class="p">().</span><span class="nx">bootstrapModule</span><span class="p">(</span><span class="nx">AppModule</span><span class="p">);</span></code></pre></div>
</div>
</div>
</div>
<p><button class="preview-sample-button" id="PreviewSampleButton-h95bbtb226157mdljrosu193rvwvbrq0" onclick="LoadPreviewSample('https://helpej2.syncfusion.com/angular/documentation/code-snippet/barcode/qrcode/qrcode-cs1',this.id);">Preview Sample</button></p>
<div id="PreviewSampleHolder-h95bbtb226157mdljrosu193rvwvbrq0"></div>
<h2 id="customizing-the-barcode-color">Customizing the Barcode color</h2>
<p>A page or printed media with barcode often appears colorful in the background and surrounding region with other contents. In such cases the barcode can also be customized to suit the needs. You can achieve this by using for forecolor property .</p>
<div class="tabs" id="code-snippet-2">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class=""><a data-target="#foiz7x6s0yxwfu7gax8g9ng9eba0nc4q-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.component.ts</a></li>
<li role="presentation" class=""><a data-target="#yc5ovtrnj75smrdj189i2d130gooiqj9-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.module.ts</a></li>
<li role="presentation" class=""><a data-target="#neqnas0heb288g4s4y8a74uqowg649s0-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">main.ts</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane" id="foiz7x6s0yxwfu7gax8g9ng9eba0nc4q-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">Component</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">"@angular/core"</span><span class="p">;</span>
<span class="kd">@Component</span><span class="p">({</span>
<span class="nx">selector</span><span class="o">:</span> <span class="s2">"app-container"</span><span class="p">,</span>
<span class="c1">// specifies the template string for the barcode generator component</span>
<span class="nx">template</span><span class="o">:</span> <span class="sb">`<ejs-qrcodegenerator style="display: block;" #barcode id="barcode" width="200px" foreColor="red" height="150px" mode="SVG" value="Syncfusion"></ejs-qrcodegenerator>`</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppComponent</span> <span class="p">{}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="yc5ovtrnj75smrdj189i2d130gooiqj9-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">NgModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BrowserModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppComponent</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.component'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span><span class="nx">QRCodeGeneratorAllModule</span><span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@syncfusion/ej2-angular-barcode-generator'</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * Module</span>
<span class="cm"> */</span>
<span class="kd">@NgModule</span><span class="p">({</span>
<span class="nx">imports</span><span class="o">:</span> <span class="p">[</span>
<span class="nx">BrowserModule</span><span class="p">,</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span> <span class="nx">QRCodeGeneratorAllModule</span> <span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span>
<span class="p">],</span>
<span class="nx">declarations</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">bootstrap</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">providers</span><span class="o">:</span> <span class="p">[</span> <span class="p">]</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppModule</span> <span class="p">{</span> <span class="p">}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="neqnas0heb288g4s4y8a74uqowg649s0-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">platformBrowserDynamic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser-dynamic'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">enableProdMode</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.module'</span><span class="p">;</span>
<span class="nx">enableProdMode</span><span class="p">();</span>
<span class="nx">platformBrowserDynamic</span><span class="p">().</span><span class="nx">bootstrapModule</span><span class="p">(</span><span class="nx">AppModule</span><span class="p">);</span></code></pre></div>
</div>
</div>
</div>
<p><button class="preview-sample-button" id="PreviewSampleButton-fpkspoo81mwkiq96nce4t4evx6nvs04i" onclick="LoadPreviewSample('https://helpej2.syncfusion.com/angular/documentation/code-snippet/barcode/qrcode/color-cs1',this.id);">Preview Sample</button></p>
<div id="PreviewSampleHolder-fpkspoo81mwkiq96nce4t4evx6nvs04i"></div>
<h2 id="customizing-the-barcode-dimension">Customizing the Barcode dimension</h2>
<p>The dimension of the barcode can be changed using the height and width properties of the barcodegenerator.</p>
<div class="tabs" id="code-snippet-3">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class=""><a data-target="#m4uc6j9wtn3mpery5ijhqwsstx8z5nog-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.component.ts</a></li>
<li role="presentation" class=""><a data-target="#jvci70xvibk3bqbpmker420pmyjla4bw-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.module.ts</a></li>
<li role="presentation" class=""><a data-target="#btf8m4dmul26ft870wq3hcrqxl6rz50m-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">main.ts</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane" id="m4uc6j9wtn3mpery5ijhqwsstx8z5nog-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">Component</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">"@angular/core"</span><span class="p">;</span>
<span class="kd">@Component</span><span class="p">({</span>
<span class="nx">selector</span><span class="o">:</span> <span class="s2">"app-container"</span><span class="p">,</span>
<span class="c1">// specifies the template string for the barcode generator component</span>
<span class="nx">template</span><span class="o">:</span> <span class="sb">`<ejs-qrcodegenerator style="display: block;" #barcode id="barcode" width="300px" height="300px" mode="SVG" value="Syncfusion"></ejs-qrcodegenerator>`</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppComponent</span> <span class="p">{}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="jvci70xvibk3bqbpmker420pmyjla4bw-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">NgModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BrowserModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppComponent</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.component'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span><span class="nx">QRCodeGeneratorAllModule</span><span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@syncfusion/ej2-angular-barcode-generator'</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * Module</span>
<span class="cm"> */</span>
<span class="kd">@NgModule</span><span class="p">({</span>
<span class="nx">imports</span><span class="o">:</span> <span class="p">[</span>
<span class="nx">BrowserModule</span><span class="p">,</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span> <span class="nx">QRCodeGeneratorAllModule</span> <span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span>
<span class="p">],</span>
<span class="nx">declarations</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">bootstrap</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">providers</span><span class="o">:</span> <span class="p">[</span> <span class="p">]</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppModule</span> <span class="p">{</span> <span class="p">}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="btf8m4dmul26ft870wq3hcrqxl6rz50m-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">platformBrowserDynamic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser-dynamic'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">enableProdMode</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.module'</span><span class="p">;</span>
<span class="nx">enableProdMode</span><span class="p">();</span>
<span class="nx">platformBrowserDynamic</span><span class="p">().</span><span class="nx">bootstrapModule</span><span class="p">(</span><span class="nx">AppModule</span><span class="p">);</span></code></pre></div>
</div>
</div>
</div>
<p><button class="preview-sample-button" id="PreviewSampleButton-ompor9jykgqj055v9ec6vyu75ackr3as" onclick="LoadPreviewSample('https://helpej2.syncfusion.com/angular/documentation/code-snippet/barcode/qrcode/dimension-cs1',this.id);">Preview Sample</button></p>
<div id="PreviewSampleHolder-ompor9jykgqj055v9ec6vyu75ackr3as"></div>
<h2 id="customizing-the-text">Customizing the text</h2>
<p>In barcode generators You can customize the barcode text by using display text property .</p>
<div class="tabs" id="code-snippet-4">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class=""><a data-target="#j5qqef0hy22bk52ps0rr7i3w1w9e9fdv-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.component.ts</a></li>
<li role="presentation" class=""><a data-target="#3j4e3hzv5nzoqfrl1ovl789j80hm9ayy-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">app.module.ts</a></li>
<li role="presentation" class=""><a data-target="#qkdmcxc1ibfw0p7t33bg1kr4bprkrghc-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">main.ts</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane" id="j5qqef0hy22bk52ps0rr7i3w1w9e9fdv-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">Component</span> <span class="p">,</span><span class="nx">ViewChild</span><span class="p">}</span> <span class="kr">from</span> <span class="s2">"@angular/core"</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BarcodeGeneratorComponent</span><span class="p">,</span><span class="nx">DisplayTextModel</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@syncfusion/ej2-angular-barcode-generator</span>
<span class="s1">@Component({</span>
<span class="s1"> selector: "app-container",</span>
<span class="s1"> // specifies the template string for the barcode generator component</span>
<span class="s1"> template: `<ejs-qrcodegenerator style="display: block;" #barcode id="barcode" width="200px" height="150px" [displayText] = '</span><span class="nx">displayText</span><span class="s1">' mode="SVG" value="Syncfusion"></ejs-qrcodegenerator>`</span>
<span class="s1">})</span>
<span class="s1"> export class AppComponent {</span>
<span class="s1"> @ViewChild('</span><span class="nx">barcode</span><span class="s1">')</span>
<span class="s1"> @ViewChild('</span><span class="nx">displayText</span><span class="s1">')</span>
<span class="s1"> public displayText: DisplayTextModel;</span>
<span class="s1"> ngOnInit(): void { </span>
<span class="s1"> this.displayText = {</span>
<span class="s1"> text:'</span><span class="nx">text</span><span class="err">'</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="3j4e3hzv5nzoqfrl1ovl789j80hm9ayy-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">NgModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BrowserModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppComponent</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.component'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span><span class="nx">QRCodeGeneratorAllModule</span><span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@syncfusion/ej2-angular-barcode-generator'</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * Module</span>
<span class="cm"> */</span>
<span class="kd">@NgModule</span><span class="p">({</span>
<span class="nx">imports</span><span class="o">:</span> <span class="p">[</span>
<span class="nx">BrowserModule</span><span class="p">,</span> <span class="nx">BarcodeGeneratorAllModule</span><span class="p">,</span> <span class="nx">QRCodeGeneratorAllModule</span> <span class="p">,</span><span class="nx">DataMatrixGeneratorAllModule</span>
<span class="p">],</span>
<span class="nx">declarations</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">bootstrap</span><span class="o">:</span> <span class="p">[</span><span class="nx">AppComponent</span><span class="p">],</span>
<span class="nx">providers</span><span class="o">:</span> <span class="p">[</span> <span class="p">]</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">AppModule</span> <span class="p">{</span> <span class="p">}</span></code></pre></div>
</div>
<div role="tabpanel" class="tab-pane" id="qkdmcxc1ibfw0p7t33bg1kr4bprkrghc-ts" data-original-lang="ts">
<div class="highlight"><pre><code class="language-ts" data-lang="ts"><span></span><span class="k">import</span> <span class="p">{</span> <span class="nx">platformBrowserDynamic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/platform-browser-dynamic'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">enableProdMode</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'@angular/core'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">AppModule</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">'./app.module'</span><span class="p">;</span>
<span class="nx">enableProdMode</span><span class="p">();</span>
<span class="nx">platformBrowserDynamic</span><span class="p">().</span><span class="nx">bootstrapModule</span><span class="p">(</span><span class="nx">AppModule</span><span class="p">);</span></code></pre></div>
</div>
</div>
</div>
<p><button class="preview-sample-button" id="PreviewSampleButton-cnmm4zbor5rga70mrp3cyiblkyg5uhtb" onclick="LoadPreviewSample('https://helpej2.syncfusion.com/angular/documentation/code-snippet/barcode/qrcode/text-cs1',this.id);">Preview Sample</button></p>
<div id="PreviewSampleHolder-cnmm4zbor5rga70mrp3cyiblkyg5uhtb"></div>
</td></tr>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Hierarchical query
You can use the hierarchy
method to build nested query.
The hierarchical queries are commonly required when you use foreign key binding.
The foreignKey
method is used to specify the key field of the
foreign table and the second argument of the hierarchy
method
accepts a selector function which selects the records from the foreign table.
import { Component, OnInit } from '@angular/core';
import { DataManager, Query, ODataAdaptor, ReturnOption } from '@syncfusion/ej2-data';
const SERVICE_URI = 'http://mvc.syncfusion.com/Services/Northwnd.svc/';
@Component({
selector: 'app-root',
templateUrl: 'app/app.template.html',
styles: [`
.e-table {
border: solid 1px #e0e0e0;
border-collapse: collapse;
font-family: Roboto;
}
.e-table td, .e-table th {
border-style: solid;
border-width: 1px 0 0;
border-color: #e0e0e0;
display: table-cell;
font-size: 14px;
line-height: 20px;
overflow: hidden;
padding: 8px 21px;
vertical-align: middle;
white-space: nowrap;
width: auto;
}
`]
})
export class AppComponent implements OnInit {
public items: object[];
public ngOnInit(): void {
new DataManager({ url: SERVICE_URI, adaptor: new ODataAdaptor()})
.executeQuery(new Query().from('Orders').take(3).hierarchy(
new Query()
.foreignKey('OrderID')
.from('Order_Details')
.sortBy('Quantity'),
() => [10248, 10249, 10250] // Selective loading of child elements
))
.then((e: ReturnOption) => this.items = e.result as object[]).catch((e) => true);
}
}
<table class='e-table'>
<tr>
<th>Order ID</th>
<th>Customer ID</th>
<th>Employee ID</th>
</tr>
<tbody *ngFor="let item of items">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="3">
<table class='e-table'>
<tr>
<th>ID</th>
<th>Price</th>
<th>Quantity</th>
</tr>
<tbody *ngFor="let order of item.Order_Details">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);