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:
HandsontableHandsontable 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:
renderereditorvalidatorEach 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.
rendererHandsontable 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:
TextRendererPasswordRendererAutocompleteRendererNumericRendererCheckboxRendererrenderer 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:
textnumericautocompletehandsontabledatecheckboxpasswordselectdropdownFor 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,},]});