This section explains the steps required to create your first Angular reporting application in Angular CLI to display an already created SSRS RDL report in the Bold Reports® Angular Report Viewer Classic without using a Report Server, refer to the following steps.
To get start quickly with Report Viewer Classic, you can check on this video:
Before you begin, make sure your development environment includes the following:
Angular provides the easiest way to set Angular CLI projects using the Angular CLI tool. To install the CLI application globally on your machine, run the following command in the Command Prompt.
npm install -g @angular/cli@latestTo learn more about
angular-clicommands, click here.
To create a new Angular application, run the following command in the Command Prompt.
ng new project-name
E.g : ng new reportviewerappThe ng new command prompts you for information about features to include in the initial app project. Accept the defaults by pressing the Enter or Return key.

Reporting tools packages are distributed in NPM package as @boldreports/angular-reporting-components.
To configure the Report Viewer Classic component, change the directory to your application’s root folder.
cd project-name
E.g: cd reportviewerappRun the following commands to install the Bold Reports® Angular library.
| Angular version | NPM package installation |
|---|---|
| 12 or greater than 12 | npm install @boldreports/angular-reporting-components@latest —save-dev |
| lesser than 12 | npm install @boldreports/[email protected] —save-dev |
Note: It is important to exercise caution during the package installation process to avoid potential complications with package compilation.
Also, Install the Bold Reports® typings by executing the below command.
npm install --save-dev @boldreports/typesRegister the @bold-reports/types under the typeRoots and add the typings jquery and reports.all to the tsconfig.app.json file.
{
...
...
"compilerOptions": {
...
...
"typeRoots": [
"node_modules/@types",
"node_modules/@boldreports/types"
],
"types": [
"jquery",
"reports.all"
]
},
...
...
}The Report Viewer Classic requires a window.jQuery object to render the component.
For Angular version 12 or higher, create a file src/globals.ts and import the jQuery as shown in the below code snippet.
import * as jquery from 'jquery';
let windowInstance = (window as { [key: string]: any });
windowInstance['jQuery'] = jquery;
windowInstance['$'] = jquery;src/app/app.module.ts file, import the src/globals.ts file prior to importing the Bold Reports viewer or designer component in the app.module.ts.
import './../globals';For Angular version lesser than 12, import jQuery into the src/polyfills.ts file as shown in the following code snippet.
import * as jquery from 'jquery';
let windowInstance = (window as { [key: string]: any });
windowInstance['jQuery'] = jquery;
windowInstance['$'] = jquery;Add the Report Viewer Classic component style (bold.reports.all.min.css) as given in the angular.json file within the projectname > styles section (For example, reportviewerapp > styles).
If you are using an Angular 6 or lower version project, add the changes to the
angular-cli.jsonfile.
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"project": {
"name": "reportviewerapp"
},
"reportviewerapp": [
{
"root": "src",
"outDir": "dist",
. . .
. . .
"styles": [
"styles.css",
"./node_modules/@boldreports/javascript-reporting-controls/Content/material/bold.reports.all.min.css"
],
"scripts": [],
. . .
. . .
}In the previous code, the
materialtheme is used. You can modify the theme based on your application, refer the following syntax:./node_modules/@boldreports/javascript-reporting-controls/Content/[theme-name]/bold.reports.all.min.css
To add the Report Viewer Classic component, refer to the following steps:
Open the app.module.ts file.
You can replace the following code snippet in the app.module.ts file.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BoldReportViewerModule } from '@boldreports/angular-reporting-components';
import { AppComponent } from './app.component';
// Report viewer
import '@boldreports/javascript-reporting-controls/Scripts/bold.report-viewer.min';
// data-visualization
import '@boldreports/javascript-reporting-controls/Scripts/data-visualization/ej.bulletgraph.min';
import '@boldreports/javascript-reporting-controls/Scripts/data-visualization/ej.chart.min';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BoldReportViewerModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }Open the index.html file and refer to the following scripts in the <head> tag.
<!-- Data-Visualization -->
<script src="https://cdn.boldreports.com/13.1.26/scripts/common/ej2-base.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/common/ej2-data.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/common/ej2-pdf-export.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/common/ej2-svg-base.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/data-visualization/ej2-lineargauge.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/data-visualization/ej2-circulargauge.min.js"></script>
<script src="https://cdn.boldreports.com/13.1.26/scripts/data-visualization/ej2-maps.min.js"></script>Open the app.component.html file and initialize the Report Viewer Classic.
You can replace the following code snippet in the app.component.html file.
<bold-reportviewer id="reportViewer_Control" style="width: 100%;height: 950px">
</bold-reportviewer>Open the app.component.ts and replace the following code example.
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'reportviewerapp';
public serviceUrl: string;
public reportPath: string;
constructor() {
// Initialize the Report Viewer Classic properties here.
}
}If you have faced the issue
'ej' is not definedafter the above configuration in the Angular CLI latest version 7, refer to the following code snippet in your application where you have rendered Syncfusion® Components (model file) to resolve the issue.
`/// <reference types="reports.all" />`Create a folder Resources in your Web API application to store the RDL reports and add already created reports to it.
Add already created reports to the newly created folder.
In this tutorial, the
sales-order-detail.rdlreport is used, and it can be downloaded at this link.
To set the report path and the Web API service, open the app.component.ts file and add the codes as shown in the constructor.
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'jsreport-sample';
public serviceUrl: string;
public reportPath: string;
constructor() {
this.serviceUrl = 'https://demos.boldreports.com/services/api/ReportViewer';
this.reportPath = '~/Resources/docs/sales-order-detail.rdl';
}
}Open the app.component.html to set the reportPath and reportServiceUrl properties of the Report Viewer Classic as in the following.
<bold-reportviewer id="reportViewer_Control" [reportServiceUrl] = "serviceUrl" [reportPath] = "reportPath" style="width: 100%;height: 950px">
</bold-reportviewer>To serve the application, follow these steps:
Navigate to the root of the application and run the application using the following command.
ng serveNavigate to the appropriate port http://localhost:4200 in the browser.
Click the view option to view the demo.