Angular is a framework for building single-page clients using HTML and TypeScript. Angular is written in TypeScript.
The following are some of the key features of Angular:
Handsontable
Handsontable
is a JavaScript component that combines data grid spreadsheet features.
It binds to any data source using the JSON format and handles large amounts of records. It supports operations like filtering, sorting and CRUD (Create, Read, Update, Delete), creating custom cell types, and adding data summaries.
Each cell in the Handsontable
has three related functions:
renderer
editor
validator
Each of these functions is responsible for the behavior of different cells. You can define them individually, or you can use one cell type to define all three at once.
Let’s take a closer look at renderer
.
renderer
Handsontable
does not directly display the values stored in the data source. Instead, whenever a datasource value needs to be displayed in a table cell, it is passed to the cell renderer
function with a table cell object (DOM node) of type HTMLTableCellElement
.
The renderer
is expected to format the passed value and place it as the content of the cell object.
Handsontable
contains five predefined renderers that you can extend when you create your own renderer:
TextRenderer
PasswordRenderer
AutocompleteRenderer
NumericRenderer
CheckboxRenderer
renderer
functionSince a table can be rendered multiple times during its lifetime, renderer
functions should be kept as simple and fast as possible. Failure to do so can result in poor performance when working with large data.
Handsontable
cell typesCell type is represented by a string such as:
text
numeric
autocomplete
handsontable
date
checkbox
password
select
dropdown
For example, the cell type numeric
can be seen in this simple code below.
var hot = new Handsontable(document.getElementById('container'), {
columns: [
{
type: 'numeric'
}
]
});
Instead of:
var hot = new Handsontable(document.getElementById('container'), {
columns: [
{
renderer: Handsontable.renderers.NumericRenderer,
editor: Handsontable.editors.TextEditor,
validator: Handsontable.validators.NumericValidator
}
]
});
Angular provides a mechanism for dynamically rendering components through the view container using ComponentFactory
. To do this, you need to know the component type at compile time.
Below, we try to display Angular Components in Handsontable
cells. This table should display an autocomplete drop-down search, and we should be able to multi-select different cells with ctrl+click.
this.hot = new Handsontable(this.handsontable.nativeElement, {data: this.tableData,colWidths: [70, 250],colHeaders: ['Id', 'Custom Component'],columns: [{data: 'id',},{data: 'id',renderer: (instance: any ,value: any, str: any, row: any, cellProperties: any) => {if (cellProperties.hasOwnProperty('ref')) {(cellProperties.ref as ComponentRef<CellContainerComponent>).instance.value = row;} else {cellProperties.ref = this.loadComponentAtDom(CellContainerComponent,str,((component: any) => {component.template = this.button4Angle;component.value = row;}));}return str;},readOnly: true,},]});