【发布时间】:2018-12-03 11:16:02
【问题描述】:
我是 Angular 5 的新手,试图从外部 API 显示对象。它显示数据但由于对象类型而引发错误
来自 fixer.io 的 json 数据
{
"success":true,
"timestamp":1529865488,
"base":"EUR",
"date":"2018-06-24",
"rates":{
"USD":1.165473,
"AUD":1.565348,
"CAD":1.546355,
"PLN":4.319264,
"MXN":23.309846
}
}
货币.服务
import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http';
import { CurrencyListMain } from './currencyList1';
import { Observable} from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CurrencyService {
private _url:string = "http://data.fixer.io/api/latest";
constructor(private http: HttpClient) { }
getEmployee(): Observable<CurrencyListMain>{
return this.http.get<CurrencyListMain>(this._url);
}
}
currencycomponent.ts:
import { Component, OnInit } from '@angular/core';
import { CurrencyService } from '../currency.service';
@Component({
selector: 'app-currency',
template: `<h2>Employee List</h2>
<ul >
<li>success: {{employees.success}}</li>
<li>timestamp: {{employees.timestamp}}</li>
<li>base: {{employees.base}}</li>
<li>rates: </li>
<li>USD: {{employees.rates.USD}}</li>
<li>AUD: {{employees.rates.AUD}}</li>
<li>CAD: {{employees.rates.CAD}}</li>
<li>PLN: {{employees.rates.PLN}}</li>
<li>MXN: {{employees.rates.MXN}}</li>
</ul>`,
styleUrls: ['./currency.component.css']
})
export class CurrencyComponent implements OnInit {
public rates = {}
public employees = {};
constructor(private _currencyService: CurrencyService) { }
ngOnInit() {
this._currencyService.getEmployee()
.subscribe(data => this.employees = data);
}
}
currencylist1.ts - 接口:
import {UserRatesList} from './userRates' ;
export interface CurrencyListMain{
success:string,
timestamp:string,
base:string,
date:string,
rates: UserRatesList
}
userRates.ts 接口:
export interface UserRatesList{
USD:number,
AUD:number,
CAD:number,
PLN:number,
MXN:number
}
收到以下错误:
CurrencyComponent.html:5 ERROR TypeError: Cannot read property 'USD' of
undefined
at Object.eval [as updateRenderer] (CurrencyComponent.html:7)
at Object.debugUpdateRenderer [as updateRenderer] (core.js:10776)
at checkAndUpdateView (core.js:10152)
at callViewAction (core.js:10388)
at execComponentViewsAction (core.js:10330)
at checkAndUpdateView (core.js:10153)
at callViewAction (core.js:10388)
at execComponentViewsAction (core.js:10330)
at checkAndUpdateView (core.js:10153)
at callWithDebugContext (core.js:11040)
如何正确获取observable中的对象类型
【问题讨论】:
-
serviceMethod返回的
data的签名是什么?您还需要为员工添加类型,例如employee: { [key:string] : UserRatesList}
标签: json angular object observable