Angular json()使用接口绑定到单个对象-RxJs/Observable失败

Angular json()使用接口绑定到单个对象-RxJs/Observable失败,angular,typescript,rxjs,angular2-template,rxjs5,Angular,Typescript,Rxjs,Angular2 Template,Rxjs5,当RESTful API返回一个JSON数组时,这个场景工作得很好——但是我调用的web方法返回一个JSON对象——因此代码被转换为将单个对象从映射到,一直映射到堆栈 此操作失败,Chrome控制台返回一个错误,显示应用程序在HTML中找不到任何映射字段 HTML {{myobject.productId}} {{myobject.productName}} JSON { "productId": 1, "productName": "My Field Value" } 接口 exp

当RESTful API返回一个JSON数组时,这个场景工作得很好——但是我调用的web方法返回一个JSON对象——因此代码被转换为将单个对象从
映射到
,一直映射到堆栈

此操作失败,Chrome控制台返回一个错误,显示应用程序在HTML中找不到任何映射字段

HTML

{{myobject.productId}}
{{myobject.productName}}
JSON

{
  "productId": 1,
  "productName": "My Field Value"
}
接口

export interface IRegistration {
    productId: number;
    productName: string;
}
可观察的

getRegistration(): Observable<IRegistration> {
    return this._http.get(this._svcURL)
        .map((response: Response) => <IRegistration>response.json())
        .do(data => console.log('ALL: ' + JSON.stringify(data)))
        .catch(this.handleError);
}

我所做的调试指向observable中的response.json()未能正确映射到IRegistration-我似乎找不到正确的语法?

代码看起来不错,我认为问题在于您没有初始化
myobject:IRegistration在使用它之前

报告说:

首先显示数据绑定属性并设置指令/组件的输入属性后,初始化指令/组件

数据在HTTP调用返回任何结果之前显示,因此当Angular尝试渲染时,
myobject
未定义


您可以使用
忽略未定义的属性,例如
{{{myobject?.productId}
或首先初始化属性
myobject:IRegistration={}

为什么您认为问题出在
map()
.do()
打印什么?另外,我认为
map()
中的
是多余的,TypeScript编译器无法从
json()
中检查正确的类型,因为它可以是任何类型,所以它永远不会引发任何错误。hmmm。。当有一个JSON数组时工作正常-在这个Angular2应用程序中,map()解决了如何填充强类型ok-当我删除[]并调整所有其他内容时,它就坏了-the.do()只是将JSON转储到控制台这是一个惊喜-this.myobject-正在由observable listener设置好-但显然没有及时初始化页面-空检查只是暂时修复了它-谢谢
myobject: IRegistration;

ngOnInit(): void {
    this._registrationService.getRegistration().subscribe(
        reg => this.myobject= reg,
        error => this.errorMessage = <any>error
    );
}
 EXCEPTION: TypeError: Cannot read property 'productId' of undefined in [
{{myobject.productId}}
{{myobject.productName}}

 in SearchComponent@0:0]