35 lines
961 B
TypeScript
35 lines
961 B
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
import { DataSource } from '@angular/cdk/collections';
|
||
|
import { Observable } from 'rxjs/Rx';
|
||
|
|
||
|
import { Account } from './account';
|
||
|
import { AccountBalances } from './accountBalances';
|
||
|
import { AccountBalancesService } from './accountBalances.service';
|
||
|
import { AccountService } from './account.service';
|
||
|
|
||
|
@Injectable()
|
||
|
export class AccountDataSource extends DataSource<Account> {
|
||
|
constructor(
|
||
|
private accountService: AccountService,
|
||
|
private accountBalancesService: AccountBalancesService,
|
||
|
) {
|
||
|
super();
|
||
|
}
|
||
|
|
||
|
connect(): Observable<Account[]> {
|
||
|
return this.accountService.query().map((accounts: Account[]) => {
|
||
|
for(let account of accounts) {
|
||
|
this.accountBalancesService
|
||
|
.get(account.id)
|
||
|
.subscribe((accountBalances: AccountBalances) => {
|
||
|
account.balances = accountBalances;
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return accounts;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
disconnect() {}
|
||
|
}
|