我可以使用*ngFor='let earning of symbolEarnings.earnings'
> {{earning.actualEPS}}
从API中获取数据以进行显示,现在我正尝试使用mat-table,以便与我的其他应用程序保持一致。
现在,如果我使用symbolEarnings
(它是[dataSource]中的对象Object),则会出现错误
提供的数据源与数组,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
所以我有点儿可以用,但是我显然需要一些帮助。如果您有任何疑问,请告诉我!谢谢
答案 0 :(得分:0)
我明白了。原来是*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;