首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError:无法将未定义或null转换为目标角9

TypeError:无法将未定义或null转换为目标角9
EN

Stack Overflow用户
提问于 2021-11-02 13:25:00
回答 1查看 4.7K关注 0票数 2

我有一个服务调用,它调用API来返回JSON。然后,我有一个带有订阅的函数,它调用服务调用。JSOON很好地返回,服务调用和订阅所有工作。但是,在构建管道中构建我的应用程序时,我会得到以下错误"Uncaught (以承诺的方式) TypeError:无法将未定义或空值转换为对象“。和我的构建失败(即使它在本地运行良好并通过了所有测试)。我使用的是角9和打字记录。

我的订阅和它的功能看起来是这样的:

代码语言:javascript
运行
复制
houseData: HouseValueObject;
houseNumber = '12345';

callHouseService() {
   this.streetHouseService.getHouseData(this.houseNumber).subscribe(
     async (data) => {
       this.houseData = await data;
       const keys = Object.keys(this.houseData.extensiveHouseData);
       this.extensiveHouseDataList = keys.map(k => this.houseData.extensiveHouseData[k]);
}
)
}

getHouseData方法看起来是这样的:

代码语言:javascript
运行
复制
export class HouseService {
  private readonly relativeURL = 'services/api/houseinfo/'
  
  constructor(private http: HttpClient) {
  
  getHouseData(houseNumber: string): Observable<HouseValueObject> {
   return.this.http.get<HouseValueObject>(this.relativeURL + houseNumber + '/');
}
}
}

HouseValueObject的值对象看起来是这样的:

代码语言:javascript
运行
复制
export class HouseValueObject {
   numberBathrooms: number;
   extensiveHouseData: HouseValue[];
}

我认为添加异步和等待将暂停执行,直到实现返回的承诺,以便将JSON数据传递到const =Object.keys.代码行,但情况似乎并非如此。我的问题是,在实现返回的承诺以确保JSON数据存在和const键=Object.keys.代码行在本地工作之前,我如何正确地执行挂起执行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-02 15:13:40

我个人会重写服务以回报承诺,应该更容易阅读。

HouseService

代码语言:javascript
运行
复制
getHouseData(houseNumber: string): Promise<HouseValueObject> {
   return this.http
      .get<HouseValueObject>(`${this.relativeURL}${houseNumber}/`)
      .toPromise<HouseValueObject>();
}

Component

代码语言:javascript
运行
复制
async callHouseService(): Promise<void> {
  this.houseData = await his.streetHouseService.getHouseData(this.houseNumber);
  this.extensiveHouseDataList = Object
    .keys(this.houseData.extensiveHouseData)
    .map(k => this.houseData.extensiveHouseData[k]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69811260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档