使用.then进行角度服务调用将对象保留为未定义

时间:2017-07-27 15:06:29

标签: angular

我正在角网站(https://angular.io/tutorial/toh-pt4)上使用Tour of Heroes示例,我遇到了解决我的页面对象的服务调用问题。如果我直接调用模拟对象一切正常(返回MOCKEDOBJECT),但是当我尝试使用响应时,我一直得到错误无法读取未定义的属性。我对角度很新,我只是没有看到我做错了什么。

这是服务代码:

getEmployer(): Promise<Employer> {
    return Promise.resolve(EMPLOYER);//doesn't work
}

getMockEmployer(): Employer {
    return EMPLOYER; //works fine
}

这是我的页面代码中的内容:

 //mocked promise - doesn't work
this.employerService.getEmployer().then(employer => this.employer = employer);

//mocked data - works fine. 
//this.employer = this.employerService.getMockEmployer(); 

仅供参考,我的npm文件夹引用@ angular / core(4.1.2)

我还没有打电话给api。我还在使用服务中的模拟数据。我没有看到英雄之旅中的样本与我的代码之间存在任何差异,但是他们的作品和我的作品没有。

1 个答案:

答案 0 :(得分:0)

帮助遇到此问题的任何人

&#34;至于为什么TOH工作,是因为他们的响应是一个数组,你得到一个对象,当你的雇主仍未定义时,你试图读取属性路径。&#34;

基本上,如果您将对象用于数据而不是对象数组,请确保使用* ngIf。