Как правильно отформатировать эти данные для таблицы материалов [dataSource]?

Я могу получить данные из 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

Так что у меня вроде как получилось, но мне явно нужна помощь с этим. Дайте знать, если у вас появятся вопросы! Спасибо

зачем ты делаешь *ngFor?

Abhishek 24.12.2018 10:07

@Abhishek Я использую его для извлечения отдельного объекта внутри объекта для строк. Например, {1: {1: a}, {2: b}, 2: {1: c}, {2: d}} выполняем * ngFor = 'let x of y' {{x.1}} должен получить это а и с правильно? Не следует ли мне этого делать?

Archavanich Kawmongkolsi 24.12.2018 10:38

Я думаю, что это сложно с матовым столом, но если вы попробуете, это нормальная легкость для вас.

Abhishek 24.12.2018 12:58

@Abhishek Я могу сделать это в обычной таблице, но я хочу использовать ее в таблице матов, чтобы она соответствовала внешнему виду

Archavanich Kawmongkolsi 24.12.2018 22:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
1 130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я заставил его работать. Оказывается, это был *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;

Другие вопросы по теме