installation - https://github.com/akveo/ng2-smart-table#installation
documentation - https://akveo.github.io/ng2-smart-table/#/documentation
example - https://akveo.github.io/ng2-smart-table
Installation
go to angular root of project ( aka where package.json exists)
execute :
npm install --save rxjs-compat hxxps://github.com/akveo/ng2-smart-table/issues/270#issuecomment-445528965
	
	
	
		
this will download & import the library to root_project\node_modules
	
	
	
		
		
		
			
		
		
	
	
		
	
fsevents reference
 
 
we going to VSCode to parent .module.ts of the needed component and paste :
	
	
	
		
 
 
we going to the needed .component.html and paste the :
	
	
	
		
 
 
we going to the needed .component.ts and paste the :
	
	
	
		
 
Table parameters
 
	
	
	
		
 
 
example of valuePrepareFunction
	
	
	
		
	
	
	
		
		
		
		
	
	
		
	
 
accessing other row fields via valuePrepareFunction
	
	
	
		
 
 
when we like to render the value as HTML, we have to set the column type to html. reference
	
	
	
		
 
 
the renderComponent, is responsible for rendering the cell content while in view mode, basic example with routerLink
	
	
	
		
line 21 - use of variables (35,36)
 
 
use of renderComponent with dropdown button and EventEmitter to raise event to parent component
	
	
	
		
 
Turn GET calls to POST
	
	
	
		
		
		
		
	
	
		
	
Create a new class extending ServerDataSource (ng2-smart-table\lib\lib\data-source\server\server.data-source.d.ts)
	
	
	
		
then to .component.ts use instead ServerDataSource :
	
	
	
		
 
Change POST parameters key name
by default is with underscore :
	
	
	
		
		
		
		
	
	
		
	
the ng2-smart-table ServerDataSource class by default accepts server-source.conf parameters (data-source\server\server-source.conf.d.ts) on constructor, enable us to set the key names :
	
	
	
		
 
	
	
	
		
		
		
		
	
	
		
	
ref - when client side - The filterFunction used by columns searchboxes for search " How to search column after applying valuePrepareFunction()”
Filter field with select
	
	
	
		
		
		
		
	
	
		
	
	
	
	
		
 
 
Disable filter field
	
	
	
		
templates/frameworks from akveo team :
ngx-admin
UI Kitten
Eva Design System
--
wenzhixin.bootstrap-table - usage without any framework
			
			documentation - https://akveo.github.io/ng2-smart-table/#/documentation
example - https://akveo.github.io/ng2-smart-table
- server side pagination
 - search
 - column formatter
 
Installation
go to angular root of project ( aka where package.json exists)
execute :
npm install --save rxjs-compat hxxps://github.com/akveo/ng2-smart-table/issues/270#issuecomment-445528965
		JavaScript:
	
	npm install --save ng2-completer
npm install --save ng2-smart-table
	this will download & import the library to root_project\node_modules
	fsevents reference
we going to VSCode to parent .module.ts of the needed component and paste :
		JavaScript:
	
	import { HttpClientModule } from '@angular/common/http'; 
import { Ng2SmartTableModule } from 'ng2-smart-table';
@NgModule({
  declarations: [AppComponent],
  imports: [
    HttpClientModule,
    Ng2SmartTableModule
  ]
})
	we going to the needed .component.html and paste the :
		JavaScript:
	
	//test
<ng2-smart-table [settings]="settings" [ source ]="source"></ng2-smart-table>
	we going to the needed .component.ts and paste the :
		JavaScript:
	
	import { HttpClient } from '@angular/common/http';
import { ServerDataSource } from 'ng2-smart-table';
export class PipisCrewTestComponent {
  settings = {
    columns: {
      id: {
        title: 'ID',
      },
      albumId: {
        title: 'App',
      },
      title: {
        title: 'Developer',
      },
      url: {
        title: 'Url',
      },
    },
  };
  source: ServerDataSource;
  constructor(http: HttpClient) {
    this.source = new ServerDataSource(http, { endPoint: 'https://jsonplaceholder.typicode.com/photos' });
  }
	Table parameters
		JavaScript:
	
	  settings = {
    pager : {perPage:50},                            //pagination – rows per page
    hideSubHeader: true,                             //hide header searchboxes for search (filters)
    actions:{add:false, edit:false, delete:false},   //hide first column having ADD DELETE anchors
    attr:{class:"table table-hover table-striped"},  //use bootstrap zebra style
    columns: {
      id: {
        title: 'ID',
      },
      albumId: {
        title: 'App',
      },
      title: {
        title: 'Developer',
      },
      url: {
        title: 'Url',
      },
    },
  };
	example of valuePrepareFunction
		JavaScript:
	
	  settings = {
    hideSubHeader: true,
    actions:{add:false, edit:false, delete:false},
    attr:{class:"table table-hover table-striped"},
    columns: {
      id: {
        title: 'ID',
        valuePrepareFunction: (value) => {
          if (value == 1)
            return 'pipiscrew';
          else 
            return value;
        }
      },
      albumId: {
        title: 'App',
      },
      title: {
        title: 'Developer',
      },
      url: {
        title: 'Url',
      },
    },
  };
	
	accessing other row fields via valuePrepareFunction
		JavaScript:
	
	//src - https://github.com/akveo/ng2-smart-table/issues/394
albumId: {
	title: 'App',
	valuePrepareFunction: (cell, row) => {
		console.log(row.id);
	}
},
	when we like to render the value as HTML, we have to set the column type to html. reference
		JavaScript:
	
	/*  settings = {
    hideSubHeader: true,
    actions:{add:false, edit:false, delete:false},
    attr:{class:"table table-hover table-striped"},
    columns: {*/
      id: {
        title: 'ID',
        type: "html",
        valuePrepareFunction: (value) => {
          if (value == 1)
            return '<i class="fab fa-accessible-icon">[/I]';
          else 
            return value;
        }
      },
/*      albumId: {
        title: 'App',
      },
      title: {
        title: 'Developer',
      },
      url: {
        title: 'Url',
      },
    },
  };*/
	the renderComponent, is responsible for rendering the cell content while in view mode, basic example with routerLink
		JavaScript:
	
	//src - https://stackblitz.com/edit/angular-bqsxidq-omgedw?file=src/app/users/userlist/userlist.component.ts or https://github.com/varmamkm/angular-route-resolver-ng2-smart-table
  settings = {
    actions: false,
    columns: {
      username: {
        title: 'User Name',
        type: 'custom',
        renderComponent: UserlistRowRenderComponent
      },
      name: { title: 'Full Name' },
      email: { title: 'Email' }
    }
  };
//userlistrowrender.component.ts
// src - https://stackblitz.com/edit/angular-bqsxidq-omgedw?file=src/app/users/userlist/userlistrowrender.component.ts
import { Input, Component, OnInit } from '@angular/core';
import { ViewCell } from 'ng2-smart-table';
@Component({
  template: `<a [routerLink]="['../userdetails', userId]">{{ username }}</a>`,
})
export class UserlistRowRenderComponent implements ViewCell, OnInit {
  public username: string;
  public userId: number;
  @Input()
  public value: string;
  @Input()
  rowData: any;
  ngOnInit() {
    this.username = this.value;
    this.userId= this.rowData.id;
  }
}
	line 21 - use of variables (35,36)
use of renderComponent with dropdown button and EventEmitter to raise event to parent component
		JavaScript:
	
	/*
https://github.com/pipiscrew/angular2_small_prjs/tree/master/ng2-smart-table-renderer_EventEmitter
https://github.com/pipiscrew/angular2_small_prjs/tree/master/ng2-smart-table-renderer_MultipleActions
*/
	Turn GET calls to POST
	Create a new class extending ServerDataSource (ng2-smart-table\lib\lib\data-source\server\server.data-source.d.ts)
		JavaScript:
	
	//greets to aefox - https://github.com/akveo/ng2-smart-table/issues/828
//postserverdatasource.ts
import { Observable } from 'rxjs/internal/Observable';
import { ServerDataSource } from 'ng2-smart-table';
export class PostServerDataSource extends ServerDataSource {
    protected requestElements(): Observable<any> {
        let httpParams = this.createRequesParams();
        return this.http.post(this.conf.endPoint, httpParams, { observe: 'response' });
    }
}
	then to .component.ts use instead ServerDataSource :
		JavaScript:
	
	  constructor(http: HttpClient) {
    //this.source = new ServerDataSource(http, { endPoint: 'https://jsonplaceholder.typicode.com/photos' });
    this.source = new PostServerDataSource(http, { endPoint: 'http://localhost:8000' });
    
  }
	Change POST parameters key name
by default is with underscore :
	the ng2-smart-table ServerDataSource class by default accepts server-source.conf parameters (data-source\server\server-source.conf.d.ts) on constructor, enable us to set the key names :
		JavaScript:
	
	//before - this.source = new PostServerDataSource(http, { endPoint: this.conf.endPoint});
this.source = new PostServerDataSource(http, { endPoint: this.conf.endPoint, pagerPageKey: "page", pagerLimitKey: "limit", filterFieldKey : "#field#" });
	
	ref - when client side - The filterFunction used by columns searchboxes for search " How to search column after applying valuePrepareFunction()”
Filter field with select
	
		JavaScript:
	
	      Roles: {
        title: 'Role',filter: {
          type: 'list',
          config: {
            selectText: '-none-',
            list: [
              {value: '1', title:'admin'},
              {value: '2', title:'restricted'},
              {value: '3', title:'entry'},
              {value: '4', title:'report'},
            ],
          }
        }
      }
	Disable filter field
		JavaScript:
	
	      car_type: {
        title: 'TestField', 
        filter: false
      },
	templates/frameworks from akveo team :
ngx-admin
UI Kitten
Eva Design System
--
wenzhixin.bootstrap-table - usage without any framework