Я пытаюсь перебрать свои объекты источника данных, выполнив что-то вроде:

this.datasource.data.forEach()

Но он не распознает, что мои данные представляют собой массив объектов, поэтому я пробую это:

 const objects: ObjectModel[] = this.datasource.data

А затем я получаю следующую ошибку:

object type is assignable to very few other types

Как я могу выполнить forEach для данных источника данных?

Обновлено, чтобы включить определение модели:

ObjectModel = {
id: string,
firstName: string,
lastName: string
}
1
Nick 4 Дек 2019 в 01:41
1
Вы должны включить пример того, как выглядит ваш data. Без этого мы не сможем ответить на ваш вопрос.
 – 
Chris Knight
4 Дек 2019 в 02:11
Я обновил свой вопрос, чтобы включить модель. Данные представляют собой массив ObjectModels, я не знаю, как это помогает ответить на вопрос. Проблема не в том, как выглядит модель, проблема в том, чтобы распознать данные как объект моего типа модели.
 – 
Nick
4 Дек 2019 в 02:17
Также было бы полезно увидеть ваш код forEach () и узнать, какие ошибки могут возникнуть при обращении к but it doesn't recognise my data is an array of objects
 – 
Chris Knight
4 Дек 2019 в 02:46

2 ответа

Вы не можете forEach объект. Однако есть способы перебирать объект ...

Object.keys

Object.values

Object.entries

Это некоторые популярные.

Вы можете проверить эту ссылку: https://developer.mozilla.org/ en-US / docs / Web / JavaScript / Reference / Global_Objects / Object / entries

Если у вас есть массив объектов, вы сможете использовать forEach. Но данные, которые вы разместили, имеют другой формат.

for (let [key, value] of Object.entries(objectModel)) {
  console.log(`${key}: ${value}`);
}
0
illcrx 4 Дек 2019 в 02:23
Datasource.data - это не объект, а массив объектов, которые я хочу перебрать.
 – 
Nick
4 Дек 2019 в 02:30
Итак, console.log первый и посмотрите, что у вас получится. Вам действительно стоит опубликовать пример вашего полного массива данных объектов.
 – 
illcrx
4 Дек 2019 в 02:37

Назначьте свой объект источнику данных, как показано ниже,

datasource: MatTableDataSource<ObjectModal> = [{
id: 1, firstName: 'David', lastName: 'Joe'},
{id: 2, firstName: 'Jeol', lastName: 'Jare'}]

const objects: ObjectModal[] = datasource.data;

Примечание. См. https://stackblitz.com/ angular / dnbermjydavk? embed = 1 & file = app / table-overview-example.html.

0
Arunkumar Ramasamy 4 Дек 2019 в 09:10