Начиная с Angular 6, Angular предоставляет возможность предоставлять массив объектов для таблицы материалов (называемой простая таблица ) вместо класса источника данных.
В вашем edit.component.html
,предоставьте свой массив рабочих директиве datasource
mat-table
:
<table mat-table [dataSource]="workers">
Вам также не нужно создавать службу для связи с вашим edit.component
, потому что объект конфигурации в dialog.open()
call имеет свойство data
, которое явно для этой задачи.Пожалуйста, обратитесь к документации Диалог материалов .
Обновление
На основании вашего комментария (что было непонятно при чтении вашего первоначального сообщения), вы хотите показать только работников выбранной записи клиента.
Вместо использования рабочих идентификаторов в вашей таблице и , а затем получения полного объекта клиента с использованием метода, используйте рабочий массив,Передайте объект customer (вместо простого идентификатора) методу onEdit
в вашем customer.component.ts.Используя документацию для предоставления данных в диалоговое окно «Материал», теперь вы можете использовать массив рабочих и отображать их в таблице.
Чтобы использовать рабочие объекты вместо простых идентификаторов, сопоставьте массив this.workers
вВаш ngOnInit
метод:
this.customers.map((customer: ICustomer) => {
const workers: IWorker[] = [];
for(let i = 0; i < customer.workerIds.length; i++) {
workers.push(getWorkerById(customer.workerIds[i]));
}
// You probably need a view model to assign a worker to the id field, or use `any`
<any>customer.workerIds = workers;
});