Я могу получить данные из API для отображения с помощью *ngFor='let earning of symbolEarnings.earnings'> {{earning.actualEPS}} Теперь я пытаюсь использовать таблицу матов, чтобы она была единообразной с остальной частью моего приложения.
Теперь, если я использую symbolEarnings, который является объектом Object в [dataSource], я получаю сообщение об ошибке
Provided data source did not match an array, Observable, or DataSource
Последние часы я пытался преобразовать в массив. Для справки это данные.
{"symbol":"AAPL","earnings":
[
{"actualEPS":2.91, "EPSReportDate":"2018-11-01"},
{"actualEPS":2.34,"EPSReportDate":"2018-07-31"}
]}
Так что я использую это, чтобы получить символ
getEarning(): void {
const id = this.route.snapshot.paramMap.get("id");
this.svc.getEarningById(id).subscribe(data => {
this.symbolEarnings = data;
который отлично работает, когда я делаю 'let x of symbolEarnings.earnings' {{x.actualEPS]]
Данные в настоящее время являются объектом Object, поэтому я получаю указанную выше ошибку.
Я пытаюсь преобразовать часть доходов в массив, но безрезультатно.
this.test = this.symbolEarnings.earnings; или this.testArray = Object.keys(this.test).map(i => this.test[i]);
Интересно то, что testArray работает с [dataSource], но мне нужно сделать *ngFor='let y of testArray' [dataSource] = "testArray", чтобы получить столбец, а затем использовать <td mat-cell>{{y.actualEPS}}</td>, который дает результат, но он повторяется в нескольких таблицах.
For example, EPS: 2, 2, 2 EPS: 3, 3, 3 EPS: 4, 4, 4 rather than EPS: 2, 3, 4
Так что у меня вроде как получилось, но мне явно нужна помощь с этим. Дайте знать, если у вас появятся вопросы! Спасибо
@Abhishek Я использую его для извлечения отдельного объекта внутри объекта для строк. Например, {1: {1: a}, {2: b}, 2: {1: c}, {2: d}} выполняем * ngFor = 'let x of y' {{x.1}} должен получить это а и с правильно? Не следует ли мне этого делать?
Я думаю, что это сложно с матовым столом, но если вы попробуете, это нормальная легкость для вас.
@Abhishek Я могу сделать это в обычной таблице, но я хочу использовать ее в таблице матов, чтобы она соответствовала внешнему виду



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я заставил его работать. Оказывается, это был *matCellDef = "let element">{{element.actualEPS}}, где он ссылался только на MatTableDataSource. Тогда я использовал dataSource = new MatTableDataSource();.
getEarning(): void {
const id = this.route.snapshot.paramMap.get("id");
this.svc.getEarningById(id).subscribe(data => {
this.symbolEarnings = data;
this.symbolEarningsDetail = this.symbolEarnings.earnings;
this.dataSource.data = this.symbolEarningsDetail;
зачем ты делаешь
*ngFor?