@Component({
selector: `list-loader`,
template: `
<my-loading-wheel *ngIf="loading"></my-loading-wheel>
<ng-content *ngIf="!loading"></ng-content>
<!-- TODO: also there will be some common error handling logic -->
`,
})
export class ListLoaderComponent implements OnInit {
loading = true;
@Input()
private observes: Observable<any>;
@Input()
private table: DataTableComponent;
private _items = [];
get items() {
return this._items;
}
ngOnInit(): void {
this.observes.subscribe(
item => {
this._items.push(item);
// TODO: handle refresh on a partial loaded list
},
e => {
// TODO: handle error
},
() => {
this.loading = false;
if (this.table) {
console.log(`showing ${this._items.length} rows`);
this.table.refreshData();
}
}
);
}
}