如何解决Angular11+Rxjs+openapi-generator-cli subscribe 无法到达子字段
该项目是使用天气 API。我使用 openapi-generator-cli 来生成 typescript api 客户端代码。
生成的服务类
/**
* This method retrieves weather forecast
* @param authorization Auth Token
* @param transactionId Transaction Id
* @param airportCode Airport Code
* @param forecastInterval forecastInterval
* @param observe set whether or not to return the data Observable as the body,response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getForecastUsingGET(authorization: string,transactionId: string,airportCode: Array<string>,forecastInterval?: number,observe?: 'body',reportProgress?: boolean,options?: {httpHeaderAccept?: 'application/json'}): Observable<Weatherforecastresp>;
public getForecastUsingGET(authorization: string,observe?: 'response',options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Weatherforecastresp>>;
public getForecastUsingGET(authorization: string,observe?: 'events',options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Weatherforecastresp>>;
public getForecastUsingGET(authorization: string,observe: any = 'body',reportProgress: boolean = false,options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {
......
return this.httpClient.get<Weatherforecastresp>(`${this.configuration.basePath}/forecasts`,{
params: queryParameters,responseType: <any>responseType,withCredentials: this.configuration.withCredentials,headers: headers,observe: observe,reportProgress: reportProgress
}
);
}
模型类
export interface Weatherforecastresp {
weatherForecasts?: Array<WeatherForecast>;
}
export interface WeatherForecast {
forecastInterval?: Forecasts;
}
export interface Forecasts {
Metadata?: Metadata;
forecasts?: Array<Forecast>;
}
export interface Forecast {
cityName?: string;
countryCode?: string;
dayNum?: string;
highTemperatureC?: string;
highTemperatureF?: string;
locationId?: string;
lowTemperatureC?: string;
lowTemperatureF?: string;
......
}
然后当我调用 API 服务时,我可以看到根数据对象,但是当我尝试调用子对象时,它返回 undefined。
export class AppComponent implements OnInit{
title = 'angular-weather-widget';
constructor(private forecastService: ForecastService) {}
ngOnInit(): void {
this.forecastService.getForecastUsingGET("","",["ATL"]).subscribe(
body => {
//this.fieldStr = body.weatherForecasts?.[0].forecastInterval?.forecasts?.[0].dayNum;
console.log(typeof(body));
console.log("body: " + JSON.stringify(body));
console.log("WeatherForecast: " + body.weatherForecasts?.length); // value is undefined
},err => {
console.log("Error caught at Subscriber " + err)
},() => {
console.log("Processing Complete. " )
}
);
}
}
问题
- 如何访问 Forecast(3 级嵌套)中的数据和
在html中显示?我尝试使用“?”和 '!'如
body.weatherForecasts?.[0].forecastInterval?.forecasts?.[0].dayNum!
但总是让undefined
回来。
提前致谢。
解决方法
错误是由大写字母不匹配引起的。如果你只关注 API 契约和模型,这有点烦人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。