import { Component } from '@angular/core'; import { DataService } from './data.service'; @Component({ selector: 'app-root', template: ` <h2>Virtual Scroll - Lazy Load</h2> <p>The Virtual Scroll allows the ComboBox to display millions of items.</p> <eui-combobox valueField="id" textField="name" [virtualScroll]="true" [lazy]="true" [data]="data" [total]="total" [pageNumber]="pageNumber" [pageSize]="pageSize" [rowHeight]="rowHeight" (filterChange)="onFilterChange($event)"></eui-combobox> `, providers: [DataService] }) export class AppComponent { data: any[] = []; total: number = 0; pageNumber: number = 1; pageSize: number = 20; rowHeight: number = 30; constructor(public dataService: DataService){} onFilterChange(event){ this.dataService.getData(event.filterValue, event.pageNumber, event.pageSize).subscribe((data) => { this.total = data.total; this.pageNumber = data.pageNumber; this.data = data.rows; }); } }
import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { BrowserModule } from '@angular/platform-browser'; import { HttpModule } from '@angular/http'; import { EasyUIModule } from 'easyui/easyui/easyui.module'; import { AppComponent } from './app.component'; @NgModule({ bootstrap: [ AppComponent ], declarations: [ AppComponent ], imports: [ FormsModule, BrowserModule, HttpModule, EasyUIModule ] }) export class AppModule { }
import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Rx'; import 'rxjs/add/observable/of'; @Injectable() export class DataService { dataSource = []; constructor() { for(let i=1; i<=10000; i++){ this.dataSource.push({ id: 'Id'+i, name: 'Item'+i }); } } getData(term: string, pageNumber: number, pageSize: number) { term = (term || '').trim(); let data = this.dataSource.filter(row => row.name.toLowerCase().indexOf(term.toLowerCase()) != -1); let start = (pageNumber - 1) * pageSize; let rows = data.slice(start, start + pageSize); return Observable.of({ total: data.length, pageNumber: pageNumber, pageSize: pageSize, rows: rows }); } }
import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; enableProdMode(); platformBrowserDynamic().bootstrapModule(AppModule);