Таблица показывает данные, которые должны использоваться при использовании массива тестовых объектов, но не при использовании фактического массива объектов, который мне нужен в таблице, и я не могу понять, чего мне не хватает!
Это тестовый массив:
export interface TestData {
compa: string;
company: string;
}
const TEST_DATA: TestData[] = [
{compa: 'blah', company: 'blahblahblah'},
{compa: 'blah2', company: 's'},
{compa: 'blah23', company: 's'},
{compa: 'blah234', company: 's'},
{compa: 'blah2345', company: 'fads'}
];
displayedColumns = ['company'];
dataSource = TEST_DATA;
... и при попытке отобразить только компанию, он успешен
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="company">
<th mat-header-cell *matHeaderCellDef> Company </th>
<td mat-cell *matCellDef="let site"> {{ site.company }} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
Массив 'sites' извлекается из базы данных, и его значение устанавливается OnInit:
sites: Site[] = [];
Но это не работает:
displayedColumns = ['company'];
dataSource = this.sites;
... хотя this.sites также является массивом объектов с каждым объектом, содержащим поле с ключом «компания», как массив TEST_DATA. Я могу даже console.log(this.sites)
, и он возвращает массив, но когда я устанавливаю dataSource = this.sites
, а затем пытаюсь console.log(this.dataSource)
, он пуст ... Это код, который получает данные из серверной части
ngOnInit() {
this.sitesService.getUtilitySites('Evansville');
this.sitesSub = this.sitesService
.getSiteUpdatedListener()
.subscribe((siteData: {sites: Site[]}) => {
this.sites = siteData.sites;
this.sitesLoaded = true;
});
}
Я сбит с толку ... пожалуйста, помогите