Как правильно отформатировать эти данные для таблицы материалов [dataSource]? - PullRequest
0 голосов
/ 24 декабря 2018

Я могу получить данные из API для отображения, используя *ngFor='let earning of symbolEarnings.earnings'> {{earning.actualEPS}} Теперь я пытаюсь использовать таблицу соответствия, чтобы она была одинаковой с остальной частью моего приложения.

Теперь, если я использую symbolEarnings, который является объектом Object в [dataSource], я получаю ошибку

При условии, что источник данных не соответствует массиву, Observable или DataSource

Теперь то, что я делал последние часы, пытается преобразовать в массив.Для справки: это данные.

{"symbol":"AAPL","earnings":
[
{"actualEPS":2.91, "EPSReportDate":"2018-11-01"},
{"actualEPS":2.34,"EPSReportDate":"2018-07-31"}
]}

Так что я использую это, чтобы получить symbolEarnings

    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

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

1 Ответ

0 голосов
/ 25 декабря 2018

Я получил его на работу.Оказывается, это было *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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...